soundcloud python/php apis, recorder python script so far.

This commit is contained in:
Naomi 2011-03-05 11:53:29 -05:00
parent b3e111b0a0
commit f68a8f67ea
109 changed files with 24297 additions and 10 deletions

View File

@ -100,6 +100,10 @@
<actionMethod actionName="index"/>
<actionMethod actionName="help"/>
</controllerFile>
<controllerFile controllerName="Recorder">
<actionMethod actionName="index"/>
<actionMethod actionName="getShowSchedule"/>
</controllerFile>
</controllersDirectory>
<formsDirectory>
<formFile formName="Login"/>
@ -325,6 +329,12 @@
<viewControllerScriptsDirectory forControllerName="Schedule">
<viewScriptFile forActionName="cancelShow"/>
</viewControllerScriptsDirectory>
<viewControllerScriptsDirectory forControllerName="Recorder">
<viewScriptFile forActionName="index"/>
</viewControllerScriptsDirectory>
<viewControllerScriptsDirectory forControllerName="Recorder">
<viewScriptFile forActionName="getShowSchedule"/>
</viewControllerScriptsDirectory>
</viewScriptsDirectory>
<viewHelpersDirectory/>
<viewFiltersDirectory enabled="false"/>
@ -370,6 +380,7 @@
<testApplicationControllerFile filesystemName="NowplayingControllerTest.php"/>
<testApplicationControllerFile filesystemName="PreferenceControllerTest.php"/>
<testApplicationControllerFile filesystemName="DashboardControllerTest.php"/>
<testApplicationControllerFile filesystemName="RecorderControllerTest.php"/>
</testApplicationControllerDirectory>
</testApplicationDirectory>
<testLibraryDirectory>

View File

@ -28,6 +28,10 @@ Linked code:
- Note: Only used for development, not needed to run Airtime.
- License: LGPLv3
* Soundcloud php api wrapper
- https://github.com/mptre/php-soundcloud/blob/master/Services/Soundcloud.php
- License: MIT
----------------
Non-linked code:
----------------

View File

@ -21,7 +21,8 @@ $ccAcl->add(new Zend_Acl_Resource('library'))
->add(new Zend_Acl_Resource('nowplaying'))
->add(new Zend_Acl_Resource('search'))
->add(new Zend_Acl_Resource('dashboard'))
->add(new Zend_Acl_Resource('preference'));
->add(new Zend_Acl_Resource('preference'))
->add(new Zend_Acl_Resource('recorder'));
/** Creating permissions */
$ccAcl->allow('G', 'index')
@ -29,13 +30,13 @@ $ccAcl->allow('G', 'index')
->allow('G', 'error')
->allow('G', 'nowplaying')
->allow('G', 'api')
->allow('G', 'recorder')
->allow('G', 'schedule')
->allow('G', 'dashboard')
->allow('H', 'library')
->allow('H', 'search')
->allow('H', 'plupload')
->allow('H', 'playlist')
->allow('H', 'sideplaylist')
->allow('A', 'user')
->allow('A', 'preference');

View File

@ -0,0 +1,32 @@
<?php
class RecorderController extends Zend_Controller_Action
{
public function init()
{
$ajaxContext = $this->_helper->getHelper('contextSwitch');
$ajaxContext->addActionContext('get-show-schedule', 'json')
->initContext();
}
public function indexAction()
{
// action body
}
public function getShowScheduleAction()
{
//$from = $this->_getParam("from");
//$to = $this->_getParam("to");
$today_timestamp = date("Y-m-d H:i:s");
$this->view->shows = Show::getShows($today_timestamp, null, $excludeInstance=NULL, $onlyRecord=TRUE);
}
}

View File

@ -110,10 +110,11 @@ class Zend_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract
{
$controller = strtolower($request->getControllerName());
if ($controller == 'api'){
$this->setRoleName("G");
} else if (!Zend_Auth::getInstance()->hasIdentity()){
if ($controller == 'api' || $controller == 'recorder'){
$this->setRoleName("G");
}
else if (!Zend_Auth::getInstance()->hasIdentity()){
if ($controller !== 'login') {

View File

@ -175,15 +175,26 @@ class Show {
Show::populateShowUntilLastGeneratedDate($showId);
}
public static function getShows($start_timestamp, $end_timestamp, $excludeInstance=NULL) {
public static function getShows($start_timestamp, $end_timestamp, $excludeInstance=NULL, $onlyRecord=FALSE) {
global $CC_DBC;
$sql = "SELECT starts, ends, show_id, name, description, color, background_color, cc_show_instances.id AS instance_id
FROM cc_show_instances
LEFT JOIN cc_show ON cc_show.id = cc_show_instances.show_id
WHERE ((starts >= '{$start_timestamp}' AND starts < '{$end_timestamp}')
LEFT JOIN cc_show ON cc_show.id = cc_show_instances.show_id";
//only want shows that are starting at the time or later.
if($onlyRecord) {
$sql = $sql." WHERE (starts >= '{$start_timestamp}' AND starts < timestamp '{$start_timestamp}' + interval '2 hours')";
$sql = $sql." AND (record = TRUE)";
}
else {
$sql = $sql." WHERE ((starts >= '{$start_timestamp}' AND starts < '{$end_timestamp}')
OR (ends > '{$start_timestamp}' AND ends <= '{$end_timestamp}')
OR (starts <= '{$start_timestamp}' AND ends >= '{$end_timestamp}'))";
}
if(isset($excludeInstance)) {
foreach($excludeInstance as $instance) {
@ -196,7 +207,6 @@ class Show {
}
//echo $sql;
return $CC_DBC->GetAll($sql);
}

View File

@ -0,0 +1,22 @@
<?php
require_once 'soundcloud-api/Services/Soundcloud.php';
class Airtime_View_Helper_SoundCloudLink extends Zend_View_Helper_Abstract
{
public function soundCloudLink()
{
$request = Zend_Controller_Front::getInstance()->getRequest();
$host = $request->getHttpHost();
$controller = $request->getControllerName();
$action = $request->getActionName();
$redirectUrl = "http://{$host}/{$controller}/{$action}";
$soundcloud = new Services_Soundcloud('2CLCxcSXYzx7QhhPVHN4A', 'pZ7beWmF06epXLHVUP1ufOg2oEnIt9XhE8l8xt0bBs', $redirectUrl);
$authorizeUrl = $soundcloud->getAuthorizeUrl();
return $authorizeUrl;
}
}

View File

@ -0,0 +1 @@
<br /><br /><center>View script for controller <b>AirtimeRecorder</b> and script/action name <b>index</b></center>

View File

@ -0,0 +1 @@
<br /><br /><center>View script for controller <b>Recorder</b> and script/action name <b>getShowSchedule</b></center>

View File

@ -0,0 +1 @@
<br /><br /><center>View script for controller <b>Recorder</b> and script/action name <b>index</b></center>

View File

@ -0,0 +1,114 @@
# SoundCloud PHP API Wrapper
## Introduction
A wrapper for the SoundCloud API written in PHP with support for authentication using [OAuth 2.0](http://oauth.net/2/).
The wrapper got a real overhaul with version 2.0. The current version was written with [PEAR](http://pear.php.net/) in mind and can easily by distributed as a PEAR package.
## Getting started
Check out the [getting started](https://github.com/mptre/php-soundcloud/wiki/OAuth-2) wiki entry for further reference on how to get started. Also make sure to check out the [demo application](https://github.com/mptre/ci-soundcloud) for some example code.
## Examples
The wrapper includes convenient methods used to perform HTTP requests on behalf of the authenticated user. Below you'll find a few quick examples.
Ofcourse you need to handle the authentication first before being able to request and modify protect resources as demonstrated below. Therefor I refer to the [demo application](https://github.com/mptre/ci-soundcloud) which got some example code on how to handle authentication.
### GET
<pre><code>try {
$response = json_decode($soundcloud->get('me'), true);
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
exit($e->getMessage());
}</code></pre>
### POST
<pre><code>$comment = &lt;&lt;&lt;EOH
&lt;comment&gt;
&lt;body&gt;Yeah!&lt;/body&gt;
&lt;/comment&gt;
EOH;
try {
$response = json_decode(
$soundcloud->post(
'tracks/1/comments',
$comment,
array(CURLOPT_HTTPHEADER => array('Content-Type: application/xml'))
),
true
);
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
exit($e->getMessage());
}</code></pre>
### PUT
<pre><code>$track = &lt;&lt;&lt;EOH
&lt;track&gt;
&lt;downloadable&gt;true&lt;/downloadable&gt;
&lt;/track&gt;
EOH;
try {
$response = json_decode(
$soundcloud->put(
'tracks/1',
$track,
array(CURLOPT_HTTPHEADER => array('Content-Type: application/xml'))
),
true
);
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
exit($e->getMessage());
}</code></pre>
### DELETE
<pre><code>try {
$response = json_decode($soundcloud->delete('tracks/1'), true);
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
exit($e->getMessage());
}</code></pre>
### DOWNLOAD TRACK
<pre><code>try {
$track = $soundcloud->download(1337);
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
exit($e->getMessage());
}
// do something clever with $track. Save to file perhaps?</code></pre>
## Feedback and questions
Found a bug or missing a feature? Don't hesitate to create a new issue here on GitHub. Or contact me [directly](https://github.com/mptre).
Also make sure to check out the official [documentation](https://github.com/soundcloud/api/wiki/) and the join [Google Group](https://groups.google.com/group/soundcloudapi?pli=1) in order to stay updated.
## License
Copyright (c) 2011 Anton Lindqvist
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@ -0,0 +1,713 @@
<?php
require_once 'Soundcloud/Exception.php';
require_once 'Soundcloud/Version.php';
/**
* SoundCloud API wrapper with support for authentication using OAuth 2.
*
* @category Services
* @package Services_Soundcloud
* @author Anton Lindqvist <anton@qvister.se>
* @copyright 2010 Anton Lindqvist <anton@qvister.se>
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://github.com/mptre/php-soundcloud
*/
class Services_Soundcloud {
/**
* Custom cURL option.
*
* @access public
*
* @var integer
*/
const CURLOPT_OAUTH_TOKEN = 173;
/**
* Access token returned by the service provider after a successful authentication.
*
* @access private
*
* @var string
*/
private $_accessToken;
/**
* Version of the API to use.
*
* @access private
*
* @var integer
*/
private static $_apiVersion = 1;
/**
* Supported audio MIME types.
*
* @access private
*
* @var array
*/
private static $_audioMimeTypes = array(
'aac' => 'video/mp4',
'aiff' => 'audio/x-aiff',
'flac' => 'audio/flac',
'mp3' => 'audio/mpeg',
'ogg' => 'audio/ogg',
'wav' => 'audio/x-wav'
);
/**
* OAuth client id.
*
* @access private
*
* @var string
*/
private $_clientId;
/**
* OAuth client secret.
*
* @access private
*
* @var string
*/
private $_clientSecret;
/**
* Development mode.
*
* @access private
*
* @var boolean
*/
private $_development;
/**
* Available API domains.
*
* @access private
*
* @var array
*/
private static $_domains = array(
'development' => 'sandbox-soundcloud.com',
'production' => 'soundcloud.com'
);
/**
* HTTP response body from the last request.
*
* @access private
*
* @var string
*/
private $_lastHttpResponseBody;
/**
* HTTP response code from the last request.
*
* @access private
*
* @var integer
*/
private $_lastHttpResponseCode;
/**
* HTTP response headers from last request.
*
* @access private
*
* @var array
*/
private $_lastHttpResponseHeaders;
/**
* OAuth paths.
*
* @access private
*
* @var array
*/
private static $_paths = array(
'authorize' => 'connect',
'access_token' => 'oauth2/token',
);
/**
* OAuth redirect uri.
*
* @access private
*
* @var string
*/
private $_redirectUri;
/**
* API response format MIME type.
*
* @access private
*
* @var string
*/
private $_requestFormat;
/**
* Available response formats.
*
* @access private
*
* @var array
*/
private static $_responseFormats = array(
'*' => '*/*',
'json' => 'application/json',
'xml' => 'application/xml'
);
/**
* HTTP user agent.
*
* @access private
*
* @var string
*/
private static $_userAgent = 'PHP-SoundCloud';
/**
* Class version.
*
* @var string
*/
public $version;
/**
* Constructor.
*
* @param string $clientId OAuth client id
* @param string $clientSecret OAuth client secret
* @param string $redirectUri OAuth redirect uri
* @param boolean $development Sandbox mode
*
* @throws Services_Soundcloud_Missing_Client_Id_Exception when missing client id
* @return void
*/
function __construct($clientId, $clientSecret, $redirectUri = null, $development = false) {
if (empty($clientId)) {
throw new Services_Soundcloud_Missing_Client_Id_Exception();
}
$this->_clientId = $clientId;
$this->_clientSecret = $clientSecret;
$this->_redirectUri = $redirectUri;
$this->_development = $development;
$this->_responseFormat = self::$_responseFormats['json'];
$this->version = Services_Soundcloud_Version::get();
}
/**
* Get authorization URL.
*
* @param array $params Optional query string parameters
*
* @return string
* @see Soundcloud::_buildUrl()
*/
function getAuthorizeUrl($params = array()) {
$defaultParams = array(
'client_id' => $this->_clientId,
'redirect_uri' => $this->_redirectUri,
'response_type' => 'code'
);
$params = array_merge($defaultParams, $params);
return $this->_buildUrl(self::$_paths['authorize'], $params, false);
}
/**
* Get access token URL.
*
* @param array $params Optional query string parameters
*
* @return string
* @see Soundcloud::_buildUrl()
*/
function getAccessTokenUrl($params = array()) {
return $this->_buildUrl(self::$_paths['access_token'], $params, false);
}
/**
* Retrieve access token.
*
* @param string $code OAuth code returned from the service provider
* @param array $postData Optional post data
* @param array $curlOptions Optional cURL options
*
* @return mixed
* @see Soundcloud::_getAccessToken()
*/
function accessToken($code, $postData = array(), $curlOptions = array()) {
$defaultPostData = array(
'code' => $code,
'client_id' => $this->_clientId,
'client_secret' => $this->_clientSecret,
'redirect_uri' => $this->_redirectUri,
'grant_type' => 'authorization_code'
);
$postData = array_merge($defaultPostData, $postData);
return $this->_getAccessToken($postData, $curlOptions);
}
/**
* Refresh access token.
*
* @param string $refreshToken
* @param array $postData Optional post data
* @param array $curlOptions Optional cURL options
*
* @return mixed
* @see Soundcloud::_getAccessToken()
*/
function accessTokenRefresh($refreshToken, $postData = array(), $curlOptions = array()) {
$defaultPostData = array(
'refresh_token' => $refreshToken,
'client_id' => $this->_clientId,
'client_secret' => $this->_clientSecret,
'redirect_uri' => $this->_redirectUri,
'grant_type' => 'refresh_token'
);
$postData = array_merge($defaultPostData, $postData);
return $this->_getAccessToken($postData, $curlOptions);
}
/**
* Get access token.
*
* @return mixed
*/
function getAccessToken() {
return $this->_accessToken;
}
/**
* Get API version.
*
* @return integer
*/
function getApiVersion() {
return self::$_apiVersion;
}
/**
* Get the corresponding MIME type for a given file extension.
*
* @param string $extension
*
* @return string
* @throws Services_Soundcloud_Unsupported_Audio_Format_Exception if the format is unsupported
*/
function getAudioMimeType($extension) {
if (array_key_exists($extension, self::$_audioMimeTypes)) {
return self::$_audioMimeTypes[$extension];
} else {
throw new Services_Soundcloud_Unsupported_Audio_Format_Exception();
}
}
/**
* Get development mode.
*
* @return boolean
*/
function getDevelopment() {
return $this->_development;
}
/**
* Get HTTP response header.
*
* @param string $header Name of the header
*
* @return mixed
*/
function getHttpHeader($header) {
if (is_array($this->_lastHttpResponseHeaders)
&& array_key_exists($header, $this->_lastHttpResponseHeaders)
) {
return $this->_lastHttpResponseHeaders[$header];
} else {
return false;
}
}
/**
* Get redirect uri.
*
* @return mixed
*/
function getRedirectUri() {
return $this->_redirectUri;
}
/**
* Get response format.
*
* @return string
*/
function getResponseFormat() {
return $this->_responseFormat;
}
/**
* Set access token.
*
* @param string $accessToken
*
* @return object
*/
function setAccessToken($accessToken) {
$this->_accessToken = $accessToken;
return $this;
}
/**
* Set redirect uri.
*
* @param string $redirectUri
*
* @return object
*/
function setRedirectUri($redirectUri) {
$this->_redirectUri = $redirectUri;
return $this;
}
/**
* Set response format.
*
* @param string $format Could either be xml or json
*
* @throws Services_Soundcloud_Unsupported_Response_Format_Exception if the given response format isn't supported
* @return object
*/
function setResponseFormat($format) {
if (array_key_exists($format, self::$_responseFormats)) {
$this->_responseFormat = self::$_responseFormats[$format];
} else {
throw new Services_Soundcloud_Unsupported_Response_Format_Exception();
}
return $this;
}
/**
* Set development mode.
*
* @param boolean $development
*
* @return object
*/
function setDevelopment($development) {
$this->_development = $development;
return $this;
}
/**
* Send a GET HTTP request.
*
* @param string $path URI to request
* @param array $params Optional query string parameters
* @param array $curlOptions Optional cURL options
*
* @return mixed
* @see Soundcloud::_request()
*/
function get($path, $params = array(), $curlOptions = array()) {
$url = $this->_buildUrl($path, $params);
return $this->_request($url, $curlOptions);
}
/**
* Send a POST HTTP request.
*
* @param string $path URI to request
* @param array $postData Optional post data
* @param array $curlOptions Optional cURL options
*
* @return mixed
* @see Soundcloud::_request()
*/
function post($path, $postData = array(), $curlOptions = array()) {
$url = $this->_buildUrl($path);
$options = array(CURLOPT_POST => true, CURLOPT_POSTFIELDS => $postData);
$options += $curlOptions;
return $this->_request($url, $options);
}
/**
* Send a PUT HTTP request.
*
* @param string $path URI to request
* @param array $postData Optional post data
* @param array $curlOptions Optional cURL options
*
* @return mixed
* @see Soundcloud::_request()
*/
function put($path, $postData, $curlOptions = array()) {
$url = $this->_buildUrl($path);
$options = array(
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_POSTFIELDS => $postData
);
$options += $curlOptions;
return $this->_request($url, $options);
}
/**
* Send a DELETE HTTP request.
*
* @param string $path URI to request
* @param array $params Optional query string parameters
* @param array $curlOptions Optional cURL options
*
* @return mixed
* @see Soundcloud::_request()
*/
function delete($path, $params = array(), $curlOptions = array()) {
$url = $this->_buildUrl($path, $params);
$options = array(CURLOPT_CUSTOMREQUEST => 'DELETE');
$options += $curlOptions;
return $this->_request($url, $options);
}
/**
* Download track.
*
* @param integer $trackId
* @param array Optional query string parameters
* @param array $curlOptions Optional cURL options
*
* @return mixed
* @see Soundcloud::_request()
*/
function download($trackId, $params = array(), $curlOptions = array()) {
$lastResponseFormat = array_pop(
preg_split('/\//', $this->getResponseFormat())
);
$defaultParams = array('oauth_token' => $this->getAccessToken());
$defaultCurlOptions = array(
CURLOPT_FOLLOWLOCATION => true,
self::CURLOPT_OAUTH_TOKEN => false
);
$url = $this->_buildUrl(
'tracks/' . $trackId . '/download',
array_merge($defaultParams, $params)
);
$options = $defaultCurlOptions + $curlOptions;
$this->setResponseFormat('*');
$response = $this->_request($url, $options);
// rollback to the previously defined response format.
$this->setResponseFormat($lastResponseFormat);
return $response;
}
/**
* Construct default HTTP headers including response format and authorization.
*
* @param boolean Include access token or not
*
* @return array $headers
*/
protected function _buildDefaultHeaders($includeAccessToken = true) {
$headers = array();
if ($this->_responseFormat) {
array_push($headers, 'Accept: ' . $this->_responseFormat);
}
if ($includeAccessToken && $this->_accessToken) {
array_push($headers, 'Authorization: OAuth ' . $this->_accessToken);
}
return $headers;
}
/**
* Construct a URL.
*
* @param string $path Relative or absolute URI
* @param array $params Optional query string parameters
* @param boolean $includeVersion Include API version
*
* @return string $url
*/
protected function _buildUrl($path, $params = null, $includeVersion = true) {
if (preg_match('/^https?\:\/\//', $path)) {
$url = $path;
} else {
$url = 'https://';
$url .= (!preg_match('/connect/', $path)) ? 'api.' : '';
$url .= ($this->_development)
? self::$_domains['development']
: self::$_domains['production'];
$url .= '/';
$url .= ($includeVersion) ? 'v' . self::$_apiVersion . '/' : '';
$url .= $path;
}
$url .= (count($params)) ? '?' . http_build_query($params) : '';
return $url;
}
/**
* Retrieve access token.
*
* @param array $postData Post data
* @param array $curlOptions Optional cURL options
*
* @return mixed
*/
protected function _getAccessToken($postData, $curlOptions = array()) {
$options = array(CURLOPT_POST => true, CURLOPT_POSTFIELDS => $postData);
$options += $curlOptions;
$response = json_decode(
$this->_request($this->getAccessTokenUrl(), $options),
true
);
if (array_key_exists('access_token', $response)) {
$this->_accessToken = $response['access_token'];
return $response;
} else {
return false;
}
}
/**
* Get HTTP user agent.
*
* @access protected
*
* @return string
*/
protected function _getUserAgent() {
return self::$_userAgent . '/' . $this->version;
}
/**
* Parse HTTP response headers.
*
* @param string $headers
*
* @return array
*/
protected function _parseHttpHeaders($headers) {
$headers = preg_split('/\n/', trim($headers));
$parsedHeaders = array();
foreach ($headers as $header) {
if (!preg_match('/\:\s/', $header)) {
continue;
}
list($key, $val) = preg_split('/\:\s/', $header, 2);
$key = str_replace('-', '_', strtolower($key));
$val = trim($val);
$parsedHeaders[$key] = $val;
}
return $parsedHeaders;
}
/**
* Validates HTTP response code.
*
* @access protected
*
* @return boolean
*/
protected function _validResponseCode($code) {
return (bool)preg_match('/^20[0-9]{1}$/', $code);
}
/**
* Performs the actual HTTP request using curl. Can be overwritten by extending classes.
*
* @access protected
*
* @param string $url
* @param array $curlOptions Optional cURL options
*
* @throws Services_Soundcloud_Invalid_Http_Response_Code_Exception if the response code isn't valid
* @return mixed
*/
protected function _request($url, $curlOptions = array()) {
$ch = curl_init();
$options = array(
CURLOPT_URL => $url,
CURLOPT_HEADER => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERAGENT => $this->_getUserAgent()
);
$options += $curlOptions;
if (array_key_exists(self::CURLOPT_OAUTH_TOKEN, $options)) {
$includeAccessToken = $options[self::CURLOPT_OAUTH_TOKEN];
unset($options[self::CURLOPT_OAUTH_TOKEN]);
} else {
$includeAccessToken = true;
}
if (array_key_exists(CURLOPT_HTTPHEADER, $options)) {
$options[CURLOPT_HTTPHEADER] = array_merge(
$this->_buildDefaultHeaders(),
$curlOptions[CURLOPT_HTTPHEADER]
);
} else {
$options[CURLOPT_HTTPHEADER] = $this->_buildDefaultHeaders($includeAccessToken);
}
curl_setopt_array($ch, $options);
$data = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
$this->_lastHttpResponseHeaders = $this->_parseHttpHeaders(
substr($data, 0, $info['header_size'])
);
$this->_lastHttpResponseBody = substr($data, $info['header_size']);
$this->_lastHttpResponseCode = $info['http_code'];
if ($this->_validResponseCode($this->_lastHttpResponseCode)) {
return $this->_lastHttpResponseBody;
} else {
throw new Services_Soundcloud_Invalid_Http_Response_Code_Exception(
null,
0,
$this->_lastHttpResponseBody,
$this->_lastHttpResponseCode
);
}
}
}

View File

@ -0,0 +1,146 @@
<?php
/**
* Soundcloud missing client id exception.
*
* @category Services
* @package Services_Soundcloud
* @author Anton Lindqvist <anton@qvister.se>
* @copyright 2010 Anton Lindqvist <anton@qvister.se>
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://github.com/mptre/php-soundcloud
*/
class Services_Soundcloud_Missing_Client_Id_Exception extends Exception {
/**
* Default message.
*
* @access protected
*
* @var string
*/
protected $message = 'All requests must include a consumer key. Referred to as client_id in OAuth2.';
}
/**
* Soundcloud invalid HTTP response code exception.
*
* @category Services
* @package Services_Soundcloud
* @author Anton Lindqvist <anton@qvister.se>
* @copyright 2010 Anton Lindqvist <anton@qvister.se>
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://github.com/mptre/php-soundcloud
*/
class Services_Soundcloud_Invalid_Http_Response_Code_Exception extends Exception {
/**
* HTTP response body.
*
* @access protected
*
* @var string
*/
protected $httpBody;
/**
* HTTP response code.
*
* @access protected
*
* @var integer
*/
protected $httpCode;
/**
* Default message.
*
* @access protected
*
* @var string
*/
protected $message = 'The requested URL responded with HTTP code %d.';
/**
* Constructor.
*
* @param string $message
* @param string $code
* @param string $httpBody
* @param integer $httpCode
*
* @return void
*/
function __construct($message = null, $code = 0, $httpBody = null, $httpCode = 0) {
$this->httpBody = $httpBody;
$this->httpCode = $httpCode;
$message = sprintf($this->message, $httpCode);
parent::__construct($message, $code);
}
/**
* Get HTTP response body.
*
* @return mixed
*/
function getHttpBody() {
return $this->httpBody;
}
/**
* Get HTTP response code.
*
* @return mixed
*/
function getHttpCode() {
return $this->httpCode;
}
}
/**
* Soundcloud unsupported response format exception.
*
* @category Services
* @package Services_Soundcloud
* @author Anton Lindqvist <anton@qvister.se>
* @copyright 2010 Anton Lindqvist <anton@qvister.se>
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://github.com/mptre/php-soundcloud
*/
class Services_Soundcloud_Unsupported_Response_Format_Exception extends Exception {
/**
* Default message.
*
* @access protected
*
* @var string
*/
protected $message = 'The given response format is unsupported.';
}
/**
* Soundcloud unsupported audio format exception.
*
* @category Services
* @package Services_Soundcloud
* @author Anton Lindqvist <anton@qvister.se>
* @copyright 2010 Anton Lindqvist <anton@qvister.se>
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://github.com/mptre/php-soundcloud
*/
class Services_Soundcloud_Unsupported_Audio_Format_Exception extends Exception {
/**
* Default message.
*
* @access protected
*
* @var string
*/
protected $message = 'The given audio format is unsupported.';
}

View File

@ -0,0 +1,22 @@
<?php
/**
* Soundcloud package version.
*
* @category Services
* @package Services_Soundcloud
* @author Anton Lindqvist <anton@qvister.se>
* @copyright 2010 Anton Lindqvist <anton@qvister.se>
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://github.com/mptre/php-soundcloud
*/
class Services_Soundcloud_Version {
const MAJOR = 2;
const MINOR = 1;
const PATCH = 1;
public static function get() {
return implode('.', array(self::MAJOR, self::MINOR, self::PATCH));
}
}

View File

@ -0,0 +1,310 @@
<?php
require_once 'Soundcloud_Test_Helper.php';
class Soundcloud_Test extends PHPUnit_Framework_TestCase {
protected $soundcloud;
function setUp() {
$this->soundcloud = new Services_Soundcloud_Expose(
'1337',
'1337',
'http://soundcloud.local/callback'
);
}
function tearDown() {
$this->soundcloud = null;
}
function testVersionFormat() {
$this->assertRegExp(
'/^[0-9]+\.[0-9]+\.[0-9]+$/',
Services_Soundcloud_Version::get()
);
}
function testGetUserAgent() {
$this->assertRegExp(
'/^PHP\-SoundCloud\/[0-9]+\.[0-9]+\.[0-9]+$/',
$this->soundcloud->getUserAgent()
);
}
function testApiVersion() {
$this->assertEquals(1, $this->soundcloud->getApiVersion());
}
function testGetAudioMimeTypes() {
$supportedExtensions = array(
'aac' => 'video/mp4',
'aiff' => 'audio/x-aiff',
'flac' => 'audio/flac',
'mp3' => 'audio/mpeg',
'ogg' => 'audio/ogg',
'wav' => 'audio/x-wav'
);
$unsupportedExtensions = array('gif', 'html', 'jpg', 'mp4', 'xml', 'xspf');
foreach ($supportedExtensions as $extension => $mimeType) {
$this->assertEquals(
$mimeType,
$this->soundcloud->getAudioMimeType($extension)
);
}
foreach ($unsupportedExtensions as $extension => $mimeType) {
$this->setExpectedException('Services_Soundcloud_Unsupported_Audio_Format_Exception');
$this->soundcloud->getAudioMimeType($extension);
}
}
function testGetAuthorizeUrl() {
$this->assertEquals(
'https://soundcloud.com/connect?client_id=1337&redirect_uri=http%3A%2F%2Fsoundcloud.local%2Fcallback&response_type=code',
$this->soundcloud->getAuthorizeUrl()
);
}
function testGetAuthorizeUrlWithCustomQueryParameters() {
$this->assertEquals(
'https://soundcloud.com/connect?client_id=1337&redirect_uri=http%3A%2F%2Fsoundcloud.local%2Fcallback&response_type=code&foo=bar',
$this->soundcloud->getAuthorizeUrl(array('foo' => 'bar'))
);
$this->assertEquals(
'https://soundcloud.com/connect?client_id=1337&redirect_uri=http%3A%2F%2Fsoundcloud.local%2Fcallback&response_type=code&foo=bar&bar=foo',
$this->soundcloud->getAuthorizeUrl(array('foo' => 'bar', 'bar' => 'foo'))
);
}
function testGetAccessTokenUrl() {
$this->assertEquals(
'https://api.soundcloud.com/oauth2/token',
$this->soundcloud->getAccessTokenUrl()
);
}
function testSetAccessToken() {
$this->soundcloud->setAccessToken('1337');
$this->assertEquals('1337', $this->soundcloud->getAccessToken());
}
function testSetDevelopment() {
$this->soundcloud->setDevelopment(true);
$this->assertTrue($this->soundcloud->getDevelopment());
}
function testSetRedirectUri() {
$this->soundcloud->setRedirectUri('http://soundcloud.local/callback');
$this->assertEquals(
'http://soundcloud.local/callback',
$this->soundcloud->getRedirectUri()
);
}
function testDefaultResponseFormat() {
$this->assertEquals(
'application/json',
$this->soundcloud->getResponseFormat()
);
}
function testSetResponseFormatHtml() {
$this->setExpectedException('Services_Soundcloud_Unsupported_Response_Format_Exception');
$this->soundcloud->setResponseFormat('html');
}
function testSetResponseFormatAll() {
$this->soundcloud->setResponseFormat('*');
$this->assertEquals(
'*/*',
$this->soundcloud->getResponseFormat()
);
}
function testSetResponseFormatJson() {
$this->soundcloud->setResponseFormat('json');
$this->assertEquals(
'application/json',
$this->soundcloud->getResponseFormat()
);
}
function testSetResponseFormatXml() {
$this->soundcloud->setResponseFormat('xml');
$this->assertEquals(
'application/xml',
$this->soundcloud->getResponseFormat()
);
}
function testResponseCodeSuccess() {
$this->assertTrue($this->soundcloud->validResponseCode(200));
}
function testResponseCodeRedirect() {
$this->assertFalse($this->soundcloud->validResponseCode(301));
}
function testResponseCodeClientError() {
$this->assertFalse($this->soundcloud->validResponseCode(400));
}
function testResponseCodeServerError() {
$this->assertFalse($this->soundcloud->validResponseCode(500));
}
function testBuildDefaultHeaders() {
$this->assertEquals(
array('Accept: application/json'),
$this->soundcloud->buildDefaultHeaders()
);
}
function testBuildDefaultHeadersWithAccessToken() {
$this->soundcloud->setAccessToken('1337');
$this->assertEquals(
array('Accept: application/json', 'Authorization: OAuth 1337'),
$this->soundcloud->buildDefaultHeaders()
);
}
function testBuildUrl() {
$this->assertEquals(
'https://api.soundcloud.com/v1/me',
$this->soundcloud->buildUrl('me')
);
}
function testBuildUrlWithQueryParameters() {
$this->assertEquals(
'https://api.soundcloud.com/v1/tracks?q=rofl+dubstep',
$this->soundcloud->buildUrl(
'tracks',
array('q' => 'rofl dubstep')
)
);
$this->assertEquals(
'https://api.soundcloud.com/v1/tracks?q=rofl+dubstep&filter=public',
$this->soundcloud->buildUrl(
'tracks',
array('q' => 'rofl dubstep', 'filter' => 'public')
)
);
}
function testBuildUrlWithDevelopmentDomain() {
$this->soundcloud->setDevelopment(true);
$this->assertEquals(
'https://api.sandbox-soundcloud.com/v1/me',
$this->soundcloud->buildUrl('me')
);
}
function testBuildUrlWithoutApiVersion() {
$this->assertEquals(
'https://api.soundcloud.com/me',
$this->soundcloud->buildUrl('me', null, false)
);
}
function testBuildUrlWithAbsoluteUrl() {
$this->assertEquals(
'https://api.soundcloud.com/me',
$this->soundcloud->buildUrl('https://api.soundcloud.com/me')
);
}
/**
* @dataProvider dataProviderHttpHeaders
*/
function testParseHttpHeaders($rawHeaders, $expectedHeaders) {
$parsedHeaders = $this->soundcloud->parseHttpHeaders($rawHeaders);
foreach ($parsedHeaders as $key => $val) {
$this->assertEquals($val, $expectedHeaders[$key]);
}
}
function testSoundcloudMissingConsumerKeyException() {
$this->setExpectedException('Services_Soundcloud_Missing_Client_Id_Exception');
$soundcloud = new Services_Soundcloud('', '');
}
function testSoundcloudInvalidHttpResponseCodeException() {
$this->setExpectedException('Services_Soundcloud_Invalid_Http_Response_Code_Exception');
$this->soundcloud->get('me');
}
/**
* @dataProvider dataProviderSoundcloudInvalidHttpResponseCode
*/
function testSoundcloudInvalidHttpResponseCode($expectedHeaders) {
try {
$this->soundcloud->get('me');
} catch (Services_Soundcloud_Invalid_Http_Response_Code_Exception $e) {
$this->assertEquals(
'{"error":"401 - Unauthorized"}',
$e->getHttpBody()
);
$this->assertEquals(401, $e->getHttpCode());
foreach ($expectedHeaders as $key => $val) {
$this->assertEquals(
$val,
$this->soundcloud->getHttpHeader($key)
);
}
}
}
static function dataProviderHttpHeaders() {
$rawHeaders = <<<HEADERS
HTTP/1.1 200 OK
Date: Wed, 17 Nov 2010 15:39:52 GMT
Cache-Control: public
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Server: foobar
Content-Length: 1337
HEADERS;
$expectedHeaders = array(
'date' => 'Wed, 17 Nov 2010 15:39:52 GMT',
'cache_control' => 'public',
'content_type' => 'text/html; charset=utf-8',
'content_encoding' => 'gzip',
'server' => 'foobar',
'content_length' => '1337'
);
return array(array($rawHeaders, $expectedHeaders));
}
static function dataProviderSoundcloudInvalidHttpResponseCode() {
$expectedHeaders = array(
'server' => 'nginx',
'content_type' => 'application/json; charset=utf-8',
'connection' => 'keep-alive',
'cache_control' => 'no-cache',
'content_length' => '30'
);
return array(array($expectedHeaders));
}
}

View File

@ -0,0 +1,94 @@
<?php
set_include_path(
get_include_path()
. PATH_SEPARATOR
. realpath(dirname(__FILE__) . '/../')
);
require_once 'Services/Soundcloud.php';
/**
* Extended class of the Soundcloud class in order to expose protected methods
* for testing.
*
* @category Services
* @package Services_Soundcloud
* @author Anton Lindqvist <anton@qvister.se>
* @copyright 2010 Anton Lindqvist <anton@qvister.se>
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://github.com/mptre/php-soundcloud
*/
class Services_Soundcloud_Expose extends Services_Soundcloud {
/**
* Class constructor. See parent constructor for further reference.
*
* @param string $clientId Application client id
* @param string $clientSecret Application client secret
* @param string $redirectUri Application redirect uri
* @param boolean $development Sandbox mode
*
* @return void
* @see Soundcloud
*/
function __construct($clientId, $clientSecret, $redirectUri = null, $development = false) {
parent::__construct($clientId, $clientSecret, $redirectUri, $development);
}
/**
* Construct default http headers including response format and authorization.
*
* @return array
* @see Soundcloud::_buildDefaultHeaders()
*/
function buildDefaultHeaders() {
return $this->_buildDefaultHeaders();
}
/**
* Construct a url.
*
* @param string $path Relative or absolute uri
* @param array $params Optional query string parameters
* @param boolean $includeVersion Include the api version
*
* @return string
* @see Soundcloud::_buildUrl()
*/
function buildUrl($path, $params = null, $includeVersion = true) {
return $this->_buildUrl($path, $params, $includeVersion);
}
/**
* Get http user agent.
*
* @return string
* @see Soundcloud::_getUserAgent()
*/
function getUserAgent() {
return $this->_getUserAgent();
}
/**
* Parse HTTP response headers.
*
* @param string $headers
*
* @return array
* @see Soundcloud::_parseHttpHeaders()
*/
function parseHttpHeaders($headers) {
return $this->_parseHttpHeaders($headers);
}
/**
* Validates http response code.
*
* @return boolean
* @see Soundcloud::_validResponseCode()
*/
function validResponseCode($code) {
return $this->_validResponseCode($code);
}
}

View File

@ -0,0 +1,8 @@
# Hostname
base_url = 'http://campcaster.dev/'
# URL to get the version number of the server API
show_schedule_url = 'Recorder/get-show-schedule/format/json'
# base path to store recordered shows at
base_recorded_files = '/home/naomi/Music/'

View File

@ -0,0 +1,118 @@
#!/usr/local/bin/python
import urllib
import logging
import json
import time
import datetime
from eci import *
from configobj import ConfigObj
import subprocess
# loading config file
try:
config = ConfigObj('config.cfg')
except Exception, e:
print 'Error loading config file: ', e
sys.exit()
shows_to_record = {}
def record_show(filelength, filename, filetype="mp3"):
length = str(filelength)+".0"
filename = filename.replace(" ", "-")
filepath = "%s%s.%s" % (config["base_recorded_files"], filename, filetype)
e = ECI()
e("cs-add play_chainsetup")
e("c-add 1st_chain")
e("ai-add alsa")
e("ao-add "+filepath)
e("cs-set-length "+length)
e("cop-select 1")
e("cs-connect")
e("start")
while 1:
time.sleep(1)
if e("engine-status") != "running":
break
e("stop")
e("cs-disconnect")
return filepath
def getDateTimeObj(time):
timeinfo = time.split(" ")
date = timeinfo[0].split("-")
time = timeinfo[1].split(":")
return datetime.datetime(int(date[0]), int(date[1]), int(date[2]), int(time[0]), int(time[1]), int(time[2]))
def process_shows(shows):
for show in shows:
show_starts = getDateTimeObj(show[u'starts'])
show_end = getDateTimeObj(show[u'ends'])
time_delta = show_end - show_starts
shows_to_record[show[u'starts']] = time_delta
def check_record():
tnow = datetime.datetime.now()
sorted_show_keys = sorted(shows_to_record.keys())
start_time = sorted_show_keys[0]
next_show = getDateTimeObj(start_time)
#print tnow, next_show
#tnow = getDateTimeObj("2011-03-04 16:00:00")
#next_show = getDateTimeObj("2011-03-04 16:00:01")
delta = next_show - tnow
if delta <= datetime.timedelta(seconds=60):
time.sleep(delta.seconds)
show_length = shows_to_record[start_time]
filepath = record_show(show_length.seconds, start_time)
#filepath = record_show(10, "2011-03-04 16:00:00")
command = "%s -c %s" %("../../utils/airtime-import", filepath)
subprocess.call([command],shell=True)
def get_shows():
url = config["base_url"] + config["show_schedule_url"]
#url = url.replace("%%from%%", "2011-03-13 20:00:00")
#url = url.replace("%%to%%", "2011-04-17 21:00:00")
response = urllib.urlopen(url)
data = response.read()
response_json = json.loads(data)
shows = response_json[u'shows']
print shows
if len(shows):
process_shows(shows)
check_record()
if __name__ == '__main__':
while True:
get_shows()
time.sleep(30)

View File

@ -0,0 +1,59 @@
import webbrowser
import scapi
# the host to connect to. Normally, this
# would be api.soundcloud.com
API_HOST = "api.soundcloud.com"
# This needs to be the consumer ID you got from
# http://soundcloud.com/settings/applications/new
CONSUMER = "2CLCxcSXYzx7QhhPVHN4A"
# This needs to be the consumer secret password you got from
# http://soundcloud.com/settings/applications/new
CONSUMER_SECRET = "pZ7beWmF06epXLHVUP1ufOg2oEnIt9XhE8l8xt0bBs"
# first, we create an OAuthAuthenticator that only knows about consumer
# credentials. This is done so that we can get an request-token as
# first step.
oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER,
CONSUMER_SECRET,
None,
None)
# The connector works with the authenticator to create and sign the requests. It
# has some helper-methods that allow us to do the OAuth-dance.
connector = scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator)
# First step is to get a request-token, and to let the user authorize that
# via the browser.
token, secret = connector.fetch_request_token()
authorization_url = connector.get_request_token_authorization_url(token)
webbrowser.open(authorization_url)
oauth_verifier = raw_input("please enter verifier code as seen in the browser:")
# Now we create a new authenticator with the temporary token & secret we got from
# the request-token. This will give us the access-token
oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER,
CONSUMER_SECRET,
token,
secret)
# we need a new connector with the new authenticator!
connector = scapi.ApiConnector(API_HOST, authenticator=oauth_authenticator)
token, secret = connector.fetch_access_token(oauth_verifier)
# now we are finally ready to go - with all four parameters OAuth requires,
# we can setup an authenticator that allows for actual API-calls.
oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER,
CONSUMER_SECRET,
token,
secret)
# we pass the connector to a Scope - a Scope is essentially a path in the REST-url-space.
# Without any path-component, it's the root from which we can then query into the
# resources.
root = scapi.Scope(scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator))
# Hey, nice meeting you! Connected to SoundCloud using OAuth will allow you to access protected resources, like the current user's name.
print "Hello, %s" % root.me().username

View File

@ -0,0 +1,5 @@
Authors
-------
Diez B. Roggisch, deets@web.de

View File

@ -0,0 +1,9 @@
2009-09-10 Diez Roggisch <deets@web.de>
* OAuth 1.0a working
* Query-Parameters for GET-requests to allow e.g. filtering
* Setting file-objects as attributes working.
* share to emails working.
* groups
* downloading/streaming private tracks

View File

@ -0,0 +1,458 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS

View File

@ -0,0 +1,45 @@
Running tests
=============
The **SCAPI** comes with a small testsuite. It can be run automatically through either setuptools_
or nose_.
Configuring tests
-----------------
Before you can run the tests, you need to configure them. You do this using the `test.ini` file in the
root of python **SCAPI** workingcopy.
Running tests through setuptools
--------------------------------
You can run the whole testsuite through setuptools_ by doing ::
host:~/SoundCloudAPI deets$ python setup.py test
Running tests through nose
--------------------------
If you want a more fine-grained control over which tests to run, you can use the `nosetests`-commandline tool.
Then to run individual tests, you can e.g. do::
host:~/SoundCloudAPI deets$ nosetests -s scapi.tests.scapi_tests:SCAPITests.test_setting_permissions
See the nose_-website for more options.
.. _nose: http://somethingaboutorange.com/mrl/projects/nose/
.. _setuptools: http://peak.telecommunity.com/DevCenter/setuptools
.. _ConfigObj: http://www.voidspace.org.uk/python/configobj.html
Creating the API-docs
=====================
Do::
epydoc -v --name="SoundCloud API" --html -o docs/api scapi --exclude="os|mimetypes|urllib2|exceptions|mimetools"

View File

@ -0,0 +1,58 @@
import webbrowser
import scapi
# the host to connect to. Normally, this
# would be api.soundcloud.com
API_HOST = "api.sandbox-soundcloud.com"
# This needs to be the consumer ID you got from
# http://soundcloud.com/settings/applications/new
CONSUMER = "gLnhFeUBnBCZF8a6Ngqq7w"
# This needs to be the consumer secret password you got from
# http://soundcloud.com/settings/applications/new
CONSUMER_SECRET = "nbWRdG5X9xUb63l4nIeFYm3nmeVJ2v4s1ROpvRSBvU8"
# first, we create an OAuthAuthenticator that only knows about consumer
# credentials. This is done so that we can get an request-token as
# first step.
oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER,
CONSUMER_SECRET,
None,
None)
# The connector works with the authenticator to create and sign the requests. It
# has some helper-methods that allow us to do the OAuth-dance.
connector = scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator)
# First step is to get a request-token, and to let the user authorize that
# via the browser.
token, secret = connector.fetch_request_token()
authorization_url = connector.get_request_token_authorization_url(token)
webbrowser.open(authorization_url)
oauth_verifier = raw_input("please enter verifier code as seen in the browser:")
# Now we create a new authenticator with the temporary token & secret we got from
# the request-token. This will give us the access-token
oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER,
CONSUMER_SECRET,
token,
secret)
# we need a new connector with the new authenticator!
connector = scapi.ApiConnector(API_HOST, authenticator=oauth_authenticator)
token, secret = connector.fetch_access_token(oauth_verifier)
# now we are finally ready to go - with all four parameters OAuth requires,
# we can setup an authenticator that allows for actual API-calls.
oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER,
CONSUMER_SECRET,
token,
secret)
# we pass the connector to a Scope - a Scope is essentiall a path in the REST-url-space.
# Without any path-component, it's the root from which we can then query into the
# resources.
root = scapi.Scope(scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator))
# Hey, nice meeting you!
print "Hello, %s" % root.me().username

View File

@ -0,0 +1,333 @@
scapi scapi-module.html
scapi.escape scapi.util-module.html#escape
scapi.USE_PROXY scapi-module.html#USE_PROXY
scapi.REQUEST_TOKEN_URL scapi-module.html#REQUEST_TOKEN_URL
scapi.PROXY scapi-module.html#PROXY
scapi.ACCESS_TOKEN_URL scapi-module.html#ACCESS_TOKEN_URL
scapi.register_classes scapi-module.html#register_classes
scapi.logger scapi-module.html#logger
scapi.AUTHORIZATION_URL scapi-module.html#AUTHORIZATION_URL
scapi.authentication scapi.authentication-module.html
scapi.authentication.USE_DOUBLE_ESCAPE_HACK scapi.authentication-module.html#USE_DOUBLE_ESCAPE_HACK
scapi.authentication.escape scapi.util-module.html#escape
scapi.authentication.logger scapi.authentication-module.html#logger
scapi.config scapi.config-module.html
scapi.json scapi.json-module.html
scapi.json.read scapi.json-module.html#read
scapi.json.write scapi.json-module.html#write
scapi.multidict scapi.multidict-module.html
scapi.tests scapi.tests-module.html
scapi.tests.scapi_tests scapi.tests.scapi_tests-module.html
scapi.tests.scapi_tests.api_logger scapi.tests.scapi_tests-module.html#api_logger
scapi.tests.scapi_tests.logger scapi.tests.scapi_tests-module.html#logger
scapi.tests.test_connect scapi.tests.test_connect-module.html
scapi.tests.test_connect.test_me_having_stress scapi.tests.test_connect-module.html#test_me_having_stress
scapi.tests.test_connect.test_scoped_track_creation scapi.tests.test_connect-module.html#test_scoped_track_creation
scapi.tests.test_connect.test_permissions scapi.tests.test_connect-module.html#test_permissions
scapi.tests.test_connect.CONSUMER_SECRET scapi.tests.test_connect-module.html#CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER scapi.tests.test_connect-module.html#CONSUMER
scapi.tests.test_connect.load_config scapi.tests.test_connect-module.html#load_config
scapi.tests.test_connect.test_upload scapi.tests.test_connect-module.html#test_upload
scapi.tests.test_connect.USER scapi.tests.test_connect-module.html#USER
scapi.tests.test_connect.test_load_config scapi.tests.test_connect-module.html#test_load_config
scapi.tests.test_connect.test_access_token_acquisition scapi.tests.test_connect-module.html#test_access_token_acquisition
scapi.tests.test_connect.test_track_creation scapi.tests.test_connect-module.html#test_track_creation
scapi.tests.test_connect.test_setting_comments scapi.tests.test_connect-module.html#test_setting_comments
scapi.tests.test_connect.test_track_update scapi.tests.test_connect-module.html#test_track_update
scapi.tests.test_connect.SECRET scapi.tests.test_connect-module.html#SECRET
scapi.tests.test_connect.test_contact_add_and_removal scapi.tests.test_connect-module.html#test_contact_add_and_removal
scapi.tests.test_connect.logger scapi.tests.test_connect-module.html#logger
scapi.tests.test_connect.test_connect scapi.tests.test_connect-module.html#test_connect
scapi.tests.test_connect.ROOT scapi.tests.test_connect-module.html#ROOT
scapi.tests.test_connect.test_contact_list scapi.tests.test_connect-module.html#test_contact_list
scapi.tests.test_connect.test_playlists scapi.tests.test_connect-module.html#test_playlists
scapi.tests.test_connect.API_HOST scapi.tests.test_connect-module.html#API_HOST
scapi.tests.test_connect._logger scapi.tests.test_connect-module.html#_logger
scapi.tests.test_connect.TOKEN scapi.tests.test_connect-module.html#TOKEN
scapi.tests.test_connect.test_events scapi.tests.test_connect-module.html#test_events
scapi.tests.test_connect.test_non_global_api scapi.tests.test_connect-module.html#test_non_global_api
scapi.tests.test_connect.test_setting_permissions scapi.tests.test_connect-module.html#test_setting_permissions
scapi.tests.test_connect.PASSWORD scapi.tests.test_connect-module.html#PASSWORD
scapi.tests.test_connect.test_setting_comments_the_way_shawn_says_its_correct scapi.tests.test_connect-module.html#test_setting_comments_the_way_shawn_says_its_correct
scapi.tests.test_connect.test_large_list scapi.tests.test_connect-module.html#test_large_list
scapi.tests.test_connect.CONNECTOR scapi.tests.test_connect-module.html#CONNECTOR
scapi.tests.test_connect.CONFIG_NAME scapi.tests.test_connect-module.html#CONFIG_NAME
scapi.tests.test_connect.RUN_INTERACTIVE_TESTS scapi.tests.test_connect-module.html#RUN_INTERACTIVE_TESTS
scapi.tests.test_connect.setup scapi.tests.test_connect-module.html#setup
scapi.tests.test_connect.test_favorites scapi.tests.test_connect-module.html#test_favorites
scapi.tests.test_connect.USE_OAUTH scapi.tests.test_connect-module.html#USE_OAUTH
scapi.tests.test_oauth scapi.tests.test_oauth-module.html
scapi.tests.test_oauth._logger scapi.tests.test_oauth-module.html#_logger
scapi.tests.test_oauth.test_oauth_connect scapi.tests.test_oauth-module.html#test_oauth_connect
scapi.tests.test_oauth.TOKEN scapi.tests.test_oauth-module.html#TOKEN
scapi.tests.test_oauth.test_base64_connect scapi.tests.test_oauth-module.html#test_base64_connect
scapi.tests.test_oauth.CONSUMER_SECRET scapi.tests.test_oauth-module.html#CONSUMER_SECRET
scapi.tests.test_oauth.SECRET scapi.tests.test_oauth-module.html#SECRET
scapi.tests.test_oauth.logger scapi.tests.test_oauth-module.html#logger
scapi.tests.test_oauth.CONSUMER scapi.tests.test_oauth-module.html#CONSUMER
scapi.util scapi.util-module.html
scapi.util.escape scapi.util-module.html#escape
exceptions.AssertionError exceptions.AssertionError-class.html
exceptions.AssertionError.__init__ exceptions.AssertionError-class.html#__init__
exceptions.AssertionError.__new__ exceptions.AssertionError-class.html#__new__
scapi.ApiConnector scapi.ApiConnector-class.html
scapi.ApiConnector.fetch_access_token scapi.ApiConnector-class.html#fetch_access_token
scapi.ApiConnector.LIST_LIMIT scapi.ApiConnector-class.html#LIST_LIMIT
scapi.ApiConnector.LIST_LIMIT_PARAMETER scapi.ApiConnector-class.html#LIST_LIMIT_PARAMETER
scapi.ApiConnector.fetch_request_token scapi.ApiConnector-class.html#fetch_request_token
scapi.ApiConnector.get_request_token_authorization_url scapi.ApiConnector-class.html#get_request_token_authorization_url
scapi.ApiConnector.normalize_method scapi.ApiConnector-class.html#normalize_method
scapi.ApiConnector.__init__ scapi.ApiConnector-class.html#__init__
scapi.ApiConnector.LIST_OFFSET_PARAMETER scapi.ApiConnector-class.html#LIST_OFFSET_PARAMETER
scapi.Comment scapi.Comment-class.html
scapi.RESTBase._scope scapi.RESTBase-class.html#_scope
scapi.RESTBase.__init__ scapi.RESTBase-class.html#__init__
scapi.Comment.KIND scapi.Comment-class.html#KIND
scapi.RESTBase.create scapi.RESTBase-class.html#create
scapi.RESTBase.get scapi.RESTBase-class.html#get
scapi.RESTBase.__getattr__ scapi.RESTBase-class.html#__getattr__
scapi.RESTBase.ALL_DOMAIN_CLASSES scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES
scapi.RESTBase.new scapi.RESTBase-class.html#new
scapi.RESTBase.ALIASES scapi.RESTBase-class.html#ALIASES
scapi.RESTBase.__ne__ scapi.RESTBase-class.html#__ne__
scapi.RESTBase._as_arguments scapi.RESTBase-class.html#_as_arguments
scapi.RESTBase._convert_value scapi.RESTBase-class.html#_convert_value
scapi.RESTBase.__setattr__ scapi.RESTBase-class.html#__setattr__
scapi.RESTBase._singleton scapi.RESTBase-class.html#_singleton
scapi.RESTBase.REGISTRY scapi.RESTBase-class.html#REGISTRY
scapi.RESTBase.__eq__ scapi.RESTBase-class.html#__eq__
scapi.RESTBase.__repr__ scapi.RESTBase-class.html#__repr__
scapi.RESTBase.__hash__ scapi.RESTBase-class.html#__hash__
scapi.Event scapi.Event-class.html
scapi.RESTBase._scope scapi.RESTBase-class.html#_scope
scapi.RESTBase.__init__ scapi.RESTBase-class.html#__init__
scapi.Event.KIND scapi.Event-class.html#KIND
scapi.RESTBase.create scapi.RESTBase-class.html#create
scapi.RESTBase.get scapi.RESTBase-class.html#get
scapi.RESTBase.__getattr__ scapi.RESTBase-class.html#__getattr__
scapi.RESTBase.ALL_DOMAIN_CLASSES scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES
scapi.RESTBase.new scapi.RESTBase-class.html#new
scapi.RESTBase.ALIASES scapi.RESTBase-class.html#ALIASES
scapi.RESTBase.__ne__ scapi.RESTBase-class.html#__ne__
scapi.RESTBase._as_arguments scapi.RESTBase-class.html#_as_arguments
scapi.RESTBase._convert_value scapi.RESTBase-class.html#_convert_value
scapi.RESTBase.__setattr__ scapi.RESTBase-class.html#__setattr__
scapi.RESTBase._singleton scapi.RESTBase-class.html#_singleton
scapi.RESTBase.REGISTRY scapi.RESTBase-class.html#REGISTRY
scapi.RESTBase.__eq__ scapi.RESTBase-class.html#__eq__
scapi.RESTBase.__repr__ scapi.RESTBase-class.html#__repr__
scapi.RESTBase.__hash__ scapi.RESTBase-class.html#__hash__
scapi.Group scapi.Group-class.html
scapi.RESTBase._scope scapi.RESTBase-class.html#_scope
scapi.RESTBase.__init__ scapi.RESTBase-class.html#__init__
scapi.Group.KIND scapi.Group-class.html#KIND
scapi.RESTBase.create scapi.RESTBase-class.html#create
scapi.RESTBase.get scapi.RESTBase-class.html#get
scapi.RESTBase.__getattr__ scapi.RESTBase-class.html#__getattr__
scapi.RESTBase.ALL_DOMAIN_CLASSES scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES
scapi.RESTBase.new scapi.RESTBase-class.html#new
scapi.RESTBase.ALIASES scapi.RESTBase-class.html#ALIASES
scapi.RESTBase.__ne__ scapi.RESTBase-class.html#__ne__
scapi.RESTBase._as_arguments scapi.RESTBase-class.html#_as_arguments
scapi.RESTBase._convert_value scapi.RESTBase-class.html#_convert_value
scapi.RESTBase.__setattr__ scapi.RESTBase-class.html#__setattr__
scapi.RESTBase._singleton scapi.RESTBase-class.html#_singleton
scapi.RESTBase.REGISTRY scapi.RESTBase-class.html#REGISTRY
scapi.RESTBase.__eq__ scapi.RESTBase-class.html#__eq__
scapi.RESTBase.__repr__ scapi.RESTBase-class.html#__repr__
scapi.RESTBase.__hash__ scapi.RESTBase-class.html#__hash__
scapi.InvalidMethodException scapi.InvalidMethodException-class.html
scapi.InvalidMethodException.__repr__ scapi.InvalidMethodException-class.html#__repr__
scapi.InvalidMethodException.__init__ scapi.InvalidMethodException-class.html#__init__
scapi.NoResultFromRequest scapi.NoResultFromRequest-class.html
scapi.Playlist scapi.Playlist-class.html
scapi.RESTBase._scope scapi.RESTBase-class.html#_scope
scapi.RESTBase.__init__ scapi.RESTBase-class.html#__init__
scapi.Playlist.KIND scapi.Playlist-class.html#KIND
scapi.RESTBase.create scapi.RESTBase-class.html#create
scapi.RESTBase.get scapi.RESTBase-class.html#get
scapi.RESTBase.__getattr__ scapi.RESTBase-class.html#__getattr__
scapi.RESTBase.ALL_DOMAIN_CLASSES scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES
scapi.RESTBase.new scapi.RESTBase-class.html#new
scapi.RESTBase.ALIASES scapi.RESTBase-class.html#ALIASES
scapi.RESTBase.__ne__ scapi.RESTBase-class.html#__ne__
scapi.RESTBase._as_arguments scapi.RESTBase-class.html#_as_arguments
scapi.RESTBase._convert_value scapi.RESTBase-class.html#_convert_value
scapi.RESTBase.__setattr__ scapi.RESTBase-class.html#__setattr__
scapi.RESTBase._singleton scapi.RESTBase-class.html#_singleton
scapi.RESTBase.REGISTRY scapi.RESTBase-class.html#REGISTRY
scapi.RESTBase.__eq__ scapi.RESTBase-class.html#__eq__
scapi.RESTBase.__repr__ scapi.RESTBase-class.html#__repr__
scapi.RESTBase.__hash__ scapi.RESTBase-class.html#__hash__
scapi.RESTBase scapi.RESTBase-class.html
scapi.RESTBase._scope scapi.RESTBase-class.html#_scope
scapi.RESTBase.__init__ scapi.RESTBase-class.html#__init__
scapi.RESTBase.__setattr__ scapi.RESTBase-class.html#__setattr__
scapi.RESTBase.create scapi.RESTBase-class.html#create
scapi.RESTBase.get scapi.RESTBase-class.html#get
scapi.RESTBase.__getattr__ scapi.RESTBase-class.html#__getattr__
scapi.RESTBase.ALL_DOMAIN_CLASSES scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES
scapi.RESTBase.new scapi.RESTBase-class.html#new
scapi.RESTBase.ALIASES scapi.RESTBase-class.html#ALIASES
scapi.RESTBase.__ne__ scapi.RESTBase-class.html#__ne__
scapi.RESTBase._as_arguments scapi.RESTBase-class.html#_as_arguments
scapi.RESTBase._convert_value scapi.RESTBase-class.html#_convert_value
scapi.RESTBase.KIND scapi.RESTBase-class.html#KIND
scapi.RESTBase._singleton scapi.RESTBase-class.html#_singleton
scapi.RESTBase.REGISTRY scapi.RESTBase-class.html#REGISTRY
scapi.RESTBase.__eq__ scapi.RESTBase-class.html#__eq__
scapi.RESTBase.__repr__ scapi.RESTBase-class.html#__repr__
scapi.RESTBase.__hash__ scapi.RESTBase-class.html#__hash__
scapi.SCRedirectHandler scapi.SCRedirectHandler-class.html
scapi.SCRedirectHandler.alternate_method scapi.SCRedirectHandler-class.html#alternate_method
scapi.SCRedirectHandler.http_error_303 scapi.SCRedirectHandler-class.html#http_error_303
scapi.SCRedirectHandler.http_error_201 scapi.SCRedirectHandler-class.html#http_error_201
scapi.Scope scapi.Scope-class.html
scapi.Scope.oauth_sign_get_request scapi.Scope-class.html#oauth_sign_get_request
scapi.Scope._map scapi.Scope-class.html#_map
scapi.Scope.__str__ scapi.Scope-class.html#__str__
scapi.Scope.__getattr__ scapi.Scope-class.html#__getattr__
scapi.Scope._call scapi.Scope-class.html#_call
scapi.Scope._create_query_string scapi.Scope-class.html#_create_query_string
scapi.Scope._create_request scapi.Scope-class.html#_create_request
scapi.Scope._get_connector scapi.Scope-class.html#_get_connector
scapi.Scope.__init__ scapi.Scope-class.html#__init__
scapi.Scope.__repr__ scapi.Scope-class.html#__repr__
scapi.Track scapi.Track-class.html
scapi.RESTBase._scope scapi.RESTBase-class.html#_scope
scapi.RESTBase.__init__ scapi.RESTBase-class.html#__init__
scapi.Track.KIND scapi.Track-class.html#KIND
scapi.RESTBase.create scapi.RESTBase-class.html#create
scapi.RESTBase._as_arguments scapi.RESTBase-class.html#_as_arguments
scapi.RESTBase.__getattr__ scapi.RESTBase-class.html#__getattr__
scapi.RESTBase.ALL_DOMAIN_CLASSES scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES
scapi.RESTBase.new scapi.RESTBase-class.html#new
scapi.Track.ALIASES scapi.Track-class.html#ALIASES
scapi.RESTBase.__ne__ scapi.RESTBase-class.html#__ne__
scapi.RESTBase.get scapi.RESTBase-class.html#get
scapi.RESTBase._convert_value scapi.RESTBase-class.html#_convert_value
scapi.RESTBase.__setattr__ scapi.RESTBase-class.html#__setattr__
scapi.RESTBase._singleton scapi.RESTBase-class.html#_singleton
scapi.RESTBase.REGISTRY scapi.RESTBase-class.html#REGISTRY
scapi.RESTBase.__eq__ scapi.RESTBase-class.html#__eq__
scapi.RESTBase.__repr__ scapi.RESTBase-class.html#__repr__
scapi.RESTBase.__hash__ scapi.RESTBase-class.html#__hash__
scapi.UnknownContentType scapi.UnknownContentType-class.html
scapi.UnknownContentType.__str__ scapi.UnknownContentType-class.html#__str__
scapi.UnknownContentType.__repr__ scapi.UnknownContentType-class.html#__repr__
scapi.UnknownContentType.__init__ scapi.UnknownContentType-class.html#__init__
scapi.User scapi.User-class.html
scapi.RESTBase._scope scapi.RESTBase-class.html#_scope
scapi.RESTBase.__init__ scapi.RESTBase-class.html#__init__
scapi.User.KIND scapi.User-class.html#KIND
scapi.RESTBase.create scapi.RESTBase-class.html#create
scapi.RESTBase._as_arguments scapi.RESTBase-class.html#_as_arguments
scapi.RESTBase.__getattr__ scapi.RESTBase-class.html#__getattr__
scapi.RESTBase.ALL_DOMAIN_CLASSES scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES
scapi.RESTBase.new scapi.RESTBase-class.html#new
scapi.User.ALIASES scapi.User-class.html#ALIASES
scapi.RESTBase.__ne__ scapi.RESTBase-class.html#__ne__
scapi.RESTBase.get scapi.RESTBase-class.html#get
scapi.RESTBase._convert_value scapi.RESTBase-class.html#_convert_value
scapi.RESTBase.__setattr__ scapi.RESTBase-class.html#__setattr__
scapi.RESTBase._singleton scapi.RESTBase-class.html#_singleton
scapi.RESTBase.REGISTRY scapi.RESTBase-class.html#REGISTRY
scapi.RESTBase.__eq__ scapi.RESTBase-class.html#__eq__
scapi.RESTBase.__repr__ scapi.RESTBase-class.html#__repr__
scapi.RESTBase.__hash__ scapi.RESTBase-class.html#__hash__
scapi.authentication.BasicAuthenticator scapi.authentication.BasicAuthenticator-class.html
scapi.authentication.BasicAuthenticator.augment_request scapi.authentication.BasicAuthenticator-class.html#augment_request
scapi.authentication.BasicAuthenticator.__init__ scapi.authentication.BasicAuthenticator-class.html#__init__
scapi.authentication.OAuthAuthenticator scapi.authentication.OAuthAuthenticator-class.html
scapi.authentication.OAuthAuthenticator.augment_request scapi.authentication.OAuthAuthenticator-class.html#augment_request
scapi.authentication.OAuthAuthenticator.generate_nonce scapi.authentication.OAuthAuthenticator-class.html#generate_nonce
scapi.authentication.OAuthAuthenticator.OAUTH_API_VERSION scapi.authentication.OAuthAuthenticator-class.html#OAUTH_API_VERSION
scapi.authentication.OAuthAuthenticator.generate_timestamp scapi.authentication.OAuthAuthenticator-class.html#generate_timestamp
scapi.authentication.OAuthAuthenticator.AUTHORIZATION_HEADER scapi.authentication.OAuthAuthenticator-class.html#AUTHORIZATION_HEADER
scapi.authentication.OAuthAuthenticator.__init__ scapi.authentication.OAuthAuthenticator-class.html#__init__
scapi.authentication.OAuthSignatureMethod_HMAC_SHA1 scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html
scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.FORBIDDEN scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#FORBIDDEN
scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_name scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_name
scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_http_method
scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_http_url
scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_parameters
scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.build_signature scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#build_signature
scapi.json.JsonReader scapi.json.JsonReader-class.html
scapi.json.JsonReader.escapes scapi.json.JsonReader-class.html#escapes
scapi.json.JsonReader._readObject scapi.json.JsonReader-class.html#_readObject
scapi.json.JsonReader._assertNext scapi.json.JsonReader-class.html#_assertNext
scapi.json.JsonReader._readNumber scapi.json.JsonReader-class.html#_readNumber
scapi.json.JsonReader._peek scapi.json.JsonReader-class.html#_peek
scapi.json.JsonReader._readNull scapi.json.JsonReader-class.html#_readNull
scapi.json.JsonReader._hexDigitToInt scapi.json.JsonReader-class.html#_hexDigitToInt
scapi.json.JsonReader._readTrue scapi.json.JsonReader-class.html#_readTrue
scapi.json.JsonReader._readDoubleSolidusComment scapi.json.JsonReader-class.html#_readDoubleSolidusComment
scapi.json.JsonReader.read scapi.json.JsonReader-class.html#read
scapi.json.JsonReader._readFalse scapi.json.JsonReader-class.html#_readFalse
scapi.json.JsonReader.hex_digits scapi.json.JsonReader-class.html#hex_digits
scapi.json.JsonReader._readComment scapi.json.JsonReader-class.html#_readComment
scapi.json.JsonReader._readArray scapi.json.JsonReader-class.html#_readArray
scapi.json.JsonReader._eatWhitespace scapi.json.JsonReader-class.html#_eatWhitespace
scapi.json.JsonReader._read scapi.json.JsonReader-class.html#_read
scapi.json.JsonReader._readString scapi.json.JsonReader-class.html#_readString
scapi.json.JsonReader._readCStyleComment scapi.json.JsonReader-class.html#_readCStyleComment
scapi.json.JsonReader._next scapi.json.JsonReader-class.html#_next
scapi.json.JsonWriter scapi.json.JsonWriter-class.html
scapi.json.JsonWriter.write scapi.json.JsonWriter-class.html#write
scapi.json.JsonWriter._append scapi.json.JsonWriter-class.html#_append
scapi.json.JsonWriter._write scapi.json.JsonWriter-class.html#_write
scapi.json.ReadException scapi.json.ReadException-class.html
scapi.json.WriteException scapi.json.WriteException-class.html
scapi.json._StringGenerator scapi.json._StringGenerator-class.html
scapi.json._StringGenerator.peek scapi.json._StringGenerator-class.html#peek
scapi.json._StringGenerator.all scapi.json._StringGenerator-class.html#all
scapi.json._StringGenerator.next scapi.json._StringGenerator-class.html#next
scapi.json._StringGenerator.__init__ scapi.json._StringGenerator-class.html#__init__
scapi.tests.scapi_tests.SCAPITests scapi.tests.scapi_tests.SCAPITests-class.html
scapi.tests.scapi_tests.SCAPITests._load_config scapi.tests.scapi_tests.SCAPITests-class.html#_load_config
scapi.tests.scapi_tests.SCAPITests.test_track_creation_with_artwork scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_artwork
scapi.tests.scapi_tests.SCAPITests.test_upload scapi.tests.scapi_tests.SCAPITests-class.html#test_upload
scapi.tests.scapi_tests.SCAPITests.test_scoped_track_creation scapi.tests.scapi_tests.SCAPITests-class.html#test_scoped_track_creation
scapi.tests.scapi_tests.SCAPITests.test_permissions scapi.tests.scapi_tests.SCAPITests-class.html#test_permissions
scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER_SECRET
scapi.tests.scapi_tests.SCAPITests.CONSUMER scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER
scapi.tests.scapi_tests.SCAPITests.test_me_having_stress scapi.tests.scapi_tests.SCAPITests-class.html#test_me_having_stress
scapi.tests.scapi_tests.SCAPITests.USER scapi.tests.scapi_tests.SCAPITests-class.html#USER
scapi.tests.scapi_tests.SCAPITests.CONFIGSPEC scapi.tests.scapi_tests.SCAPITests-class.html#CONFIGSPEC
scapi.tests.scapi_tests.SCAPITests.test_track_creation_with_email_sharers scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_email_sharers
scapi.tests.scapi_tests.SCAPITests.test_setting_comments scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_comments
scapi.tests.scapi_tests.SCAPITests.test_access_token_acquisition scapi.tests.scapi_tests.SCAPITests-class.html#test_access_token_acquisition
scapi.tests.scapi_tests.SCAPITests.test_track_creation scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation
scapi.tests.scapi_tests.SCAPITests.test_groups scapi.tests.scapi_tests.SCAPITests-class.html#test_groups
scapi.tests.scapi_tests.SCAPITests.test_track_update scapi.tests.scapi_tests.SCAPITests-class.html#test_track_update
scapi.tests.scapi_tests.SCAPITests.test_modifying_playlists scapi.tests.scapi_tests.SCAPITests-class.html#test_modifying_playlists
scapi.tests.scapi_tests.SCAPITests.SECRET scapi.tests.scapi_tests.SCAPITests-class.html#SECRET
scapi.tests.scapi_tests.SCAPITests.test_oauth_get_signing scapi.tests.scapi_tests.SCAPITests-class.html#test_oauth_get_signing
scapi.tests.scapi_tests.SCAPITests.test_contact_add_and_removal scapi.tests.scapi_tests.SCAPITests-class.html#test_contact_add_and_removal
scapi.tests.scapi_tests.SCAPITests.test_connect scapi.tests.scapi_tests.SCAPITests-class.html#test_connect
scapi.tests.scapi_tests.SCAPITests.test_large_list scapi.tests.scapi_tests.SCAPITests-class.html#test_large_list
unittest.TestCase.failureException exceptions.AssertionError-class.html
scapi.tests.scapi_tests.SCAPITests.test_contact_list scapi.tests.scapi_tests.SCAPITests-class.html#test_contact_list
scapi.tests.scapi_tests.SCAPITests.test_playlists scapi.tests.scapi_tests.SCAPITests-class.html#test_playlists
scapi.tests.scapi_tests.SCAPITests.API_HOST scapi.tests.scapi_tests.SCAPITests-class.html#API_HOST
scapi.tests.scapi_tests.SCAPITests.setUp scapi.tests.scapi_tests.SCAPITests-class.html#setUp
scapi.tests.scapi_tests.SCAPITests.test_downloadable scapi.tests.scapi_tests.SCAPITests-class.html#test_downloadable
scapi.tests.scapi_tests.SCAPITests.TOKEN scapi.tests.scapi_tests.SCAPITests-class.html#TOKEN
scapi.tests.scapi_tests.SCAPITests.test_events scapi.tests.scapi_tests.SCAPITests-class.html#test_events
scapi.tests.scapi_tests.SCAPITests.test_non_global_api scapi.tests.scapi_tests.SCAPITests-class.html#test_non_global_api
scapi.tests.scapi_tests.SCAPITests.PASSWORD scapi.tests.scapi_tests.SCAPITests-class.html#PASSWORD
scapi.tests.scapi_tests.SCAPITests.test_setting_comments_the_way_shawn_says_its_correct scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_comments_the_way_shawn_says_its_correct
scapi.tests.scapi_tests.SCAPITests.CONFIG_NAME scapi.tests.scapi_tests.SCAPITests-class.html#CONFIG_NAME
scapi.tests.scapi_tests.SCAPITests.test_setting_permissions scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_permissions
scapi.tests.scapi_tests.SCAPITests.RUN_INTERACTIVE_TESTS scapi.tests.scapi_tests.SCAPITests-class.html#RUN_INTERACTIVE_TESTS
scapi.tests.scapi_tests.SCAPITests.test_favorites scapi.tests.scapi_tests.SCAPITests-class.html#test_favorites
scapi.tests.scapi_tests.SCAPITests.test_track_creation_with_updated_artwork scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_updated_artwork
scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR scapi.tests.scapi_tests.SCAPITests-class.html#AUTHENTICATOR
scapi.tests.scapi_tests.SCAPITests.test_streaming scapi.tests.scapi_tests.SCAPITests-class.html#test_streaming
scapi.tests.scapi_tests.SCAPITests.test_playlist_creation scapi.tests.scapi_tests.SCAPITests-class.html#test_playlist_creation
scapi.tests.scapi_tests.SCAPITests.test_track_deletion scapi.tests.scapi_tests.SCAPITests-class.html#test_track_deletion
scapi.tests.scapi_tests.SCAPITests.test_filtered_list scapi.tests.scapi_tests.SCAPITests-class.html#test_filtered_list
scapi.tests.scapi_tests.SCAPITests.root scapi.tests.scapi_tests.SCAPITests-class.html#root
scapi.util.MultiDict scapi.util.MultiDict-class.html
scapi.util.MultiDict.add scapi.util.MultiDict-class.html#add
scapi.util.MultiDict.iteritemslist scapi.util.MultiDict-class.html#iteritemslist

View File

@ -0,0 +1,216 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Class Hierarchy</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th bgcolor="#70b0f0" class="navbar-select"
>&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">&nbsp;</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="class-tree.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<center><b>
[ <a href="module-tree.html">Module Hierarchy</a>
| <a href="class-tree.html">Class Hierarchy</a> ]
</b></center><br />
<h1 class="epydoc">Class Hierarchy</h1>
<ul class="nomargin-top">
<li> <strong class="uidlink">urllib2.BaseHandler</strong>
<ul>
<li> <strong class="uidlink">urllib2.HTTPRedirectHandler</strong>
<ul>
<li> <strong class="uidlink"><a href="scapi.SCRedirectHandler-class.html" onclick="show_private();">scapi.SCRedirectHandler</a></strong>:
<em class="summary">A urllib2-Handler to deal with the redirects the RESTful API of SC
uses.</em>
</li>
</ul>
</li>
</ul>
</li>
<li> <strong class="uidlink">object</strong>:
<em class="summary">The most base type</em>
<ul>
<li> <strong class="uidlink"><a href="scapi.ApiConnector-class.html" onclick="show_private();">scapi.ApiConnector</a></strong>:
<em class="summary">The ApiConnector holds all the data necessary to authenticate
against the soundcloud-api.</em>
</li>
<li> <strong class="uidlink">exceptions.BaseException</strong>:
<em class="summary">Common base class for all exceptions</em>
<ul>
<li> <strong class="uidlink">exceptions.Exception</strong>:
<em class="summary">Common base class for all non-exit exceptions.</em>
<ul>
<li> <strong class="uidlink"><a href="scapi.InvalidMethodException-class.html" onclick="show_private();">scapi.InvalidMethodException</a></strong>
</li>
<li> <strong class="uidlink"><a href="scapi.NoResultFromRequest-class.html" onclick="show_private();">scapi.NoResultFromRequest</a></strong>
</li>
<li> <strong class="uidlink"><a href="scapi.json.ReadException-class.html">scapi.json.ReadException</a></strong>
</li>
<li> <strong class="uidlink">exceptions.StandardError</strong>:
<em class="summary">Base class for all standard Python exceptions that do not represent
interpreter exiting.</em>
<ul>
<li> <strong class="uidlink"><a href="exceptions.AssertionError-class.html">exceptions.AssertionError</a></strong>:
<em class="summary">Assertion failed.</em>
</li>
</ul>
</li>
<li> <strong class="uidlink"><a href="scapi.UnknownContentType-class.html" onclick="show_private();">scapi.UnknownContentType</a></strong>
</li>
<li> <strong class="uidlink"><a href="scapi.json.WriteException-class.html">scapi.json.WriteException</a></strong>
</li>
</ul>
</li>
</ul>
</li>
<li> <strong class="uidlink"><a href="scapi.authentication.BasicAuthenticator-class.html">scapi.authentication.BasicAuthenticator</a></strong>
</li>
<li> <strong class="uidlink"><a href="scapi.json.JsonReader-class.html">scapi.json.JsonReader</a></strong>
</li>
<li> <strong class="uidlink"><a href="scapi.json.JsonWriter-class.html">scapi.json.JsonWriter</a></strong>
</li>
<li> <strong class="uidlink"><a href="scapi.authentication.OAuthAuthenticator-class.html">scapi.authentication.OAuthAuthenticator</a></strong>
</li>
<li> <strong class="uidlink"><a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">scapi.authentication.OAuthSignatureMethod_HMAC_SHA1</a></strong>
</li>
<li> <strong class="uidlink"><a href="scapi.RESTBase-class.html" onclick="show_private();">scapi.RESTBase</a></strong>:
<em class="summary">The baseclass for all our domain-objects/resources.</em>
<ul>
<li> <strong class="uidlink"><a href="scapi.Comment-class.html">scapi.Comment</a></strong>:
<em class="summary">A comment domain object/resource.</em>
</li>
<li> <strong class="uidlink"><a href="scapi.Event-class.html">scapi.Event</a></strong>:
<em class="summary">A event domain object/resource.</em>
</li>
<li> <strong class="uidlink"><a href="scapi.Group-class.html">scapi.Group</a></strong>:
<em class="summary">A group domain object/resource</em>
</li>
<li> <strong class="uidlink"><a href="scapi.Playlist-class.html">scapi.Playlist</a></strong>:
<em class="summary">A playlist/set domain object/resource</em>
</li>
<li> <strong class="uidlink"><a href="scapi.Track-class.html">scapi.Track</a></strong>:
<em class="summary">A track domain object/resource.</em>
</li>
<li> <strong class="uidlink"><a href="scapi.User-class.html">scapi.User</a></strong>:
<em class="summary">A user domain object/resource.</em>
</li>
</ul>
</li>
<li> <strong class="uidlink"><a href="scapi.Scope-class.html" onclick="show_private();">scapi.Scope</a></strong>:
<em class="summary">The basic means to query and create resources.</em>
</li>
<li> <strong class="uidlink">unittest.TestCase</strong>:
<em class="summary">A class whose instances are single test cases.</em>
<ul>
<li> <strong class="uidlink"><a href="scapi.tests.scapi_tests.SCAPITests-class.html">scapi.tests.scapi_tests.SCAPITests</a></strong>
</li>
</ul>
</li>
<li> <strong class="uidlink"><a href="scapi.json._StringGenerator-class.html" onclick="show_private();">scapi.json._StringGenerator</a></strong>
</li>
<li> <strong class="uidlink">dict</strong>:
<em class="summary">dict() -&gt; new empty dictionary.</em>
<ul>
<li> <strong class="uidlink"><a href="scapi.util.MultiDict-class.html">scapi.util.MultiDict</a></strong>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th bgcolor="#70b0f0" class="navbar-select"
>&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 B

View File

@ -0,0 +1,322 @@
/* Epydoc CSS Stylesheet
*
* This stylesheet can be used to customize the appearance of epydoc's
* HTML output.
*
*/
/* Default Colors & Styles
* - Set the default foreground & background color with 'body'; and
* link colors with 'a:link' and 'a:visited'.
* - Use bold for decision list terms.
* - The heading styles defined here are used for headings *within*
* docstring descriptions. All headings used by epydoc itself use
* either class='epydoc' or class='toc' (CSS styles for both
* defined below).
*/
body { background: #ffffff; color: #000000; }
p { margin-top: 0.5em; margin-bottom: 0.5em; }
a:link { color: #0000ff; }
a:visited { color: #204080; }
dt { font-weight: bold; }
h1 { font-size: +140%; font-style: italic;
font-weight: bold; }
h2 { font-size: +125%; font-style: italic;
font-weight: bold; }
h3 { font-size: +110%; font-style: italic;
font-weight: normal; }
code { font-size: 100%; }
/* N.B.: class, not pseudoclass */
a.link { font-family: monospace; }
/* Page Header & Footer
* - The standard page header consists of a navigation bar (with
* pointers to standard pages such as 'home' and 'trees'); a
* breadcrumbs list, which can be used to navigate to containing
* classes or modules; options links, to show/hide private
* variables and to show/hide frames; and a page title (using
* <h1>). The page title may be followed by a link to the
* corresponding source code (using 'span.codelink').
* - The footer consists of a navigation bar, a timestamp, and a
* pointer to epydoc's homepage.
*/
h1.epydoc { margin: 0; font-size: +140%; font-weight: bold; }
h2.epydoc { font-size: +130%; font-weight: bold; }
h3.epydoc { font-size: +115%; font-weight: bold;
margin-top: 0.2em; }
td h3.epydoc { font-size: +115%; font-weight: bold;
margin-bottom: 0; }
table.navbar { background: #a0c0ff; color: #000000;
border: 2px groove #c0d0d0; }
table.navbar table { color: #000000; }
th.navbar-select { background: #70b0ff;
color: #000000; }
table.navbar a { text-decoration: none; }
table.navbar a:link { color: #0000ff; }
table.navbar a:visited { color: #204080; }
span.breadcrumbs { font-size: 85%; font-weight: bold; }
span.options { font-size: 70%; }
span.codelink { font-size: 85%; }
td.footer { font-size: 85%; }
/* Table Headers
* - Each summary table and details section begins with a 'header'
* row. This row contains a section title (marked by
* 'span.table-header') as well as a show/hide private link
* (marked by 'span.options', defined above).
* - Summary tables that contain user-defined groups mark those
* groups using 'group header' rows.
*/
td.table-header { background: #70b0ff; color: #000000;
border: 1px solid #608090; }
td.table-header table { color: #000000; }
td.table-header table a:link { color: #0000ff; }
td.table-header table a:visited { color: #204080; }
span.table-header { font-size: 120%; font-weight: bold; }
th.group-header { background: #c0e0f8; color: #000000;
text-align: left; font-style: italic;
font-size: 115%;
border: 1px solid #608090; }
/* Summary Tables (functions, variables, etc)
* - Each object is described by a single row of the table with
* two cells. The left cell gives the object's type, and is
* marked with 'code.summary-type'. The right cell gives the
* object's name and a summary description.
* - CSS styles for the table's header and group headers are
* defined above, under 'Table Headers'
*/
table.summary { border-collapse: collapse;
background: #e8f0f8; color: #000000;
border: 1px solid #608090;
margin-bottom: 0.5em; }
td.summary { border: 1px solid #608090; }
code.summary-type { font-size: 85%; }
table.summary a:link { color: #0000ff; }
table.summary a:visited { color: #204080; }
/* Details Tables (functions, variables, etc)
* - Each object is described in its own div.
* - A single-row summary table w/ table-header is used as
* a header for each details section (CSS style for table-header
* is defined above, under 'Table Headers').
*/
table.details { border-collapse: collapse;
background: #e8f0f8; color: #000000;
border: 1px solid #608090;
margin: .2em 0 0 0; }
table.details table { color: #000000; }
table.details a:link { color: #0000ff; }
table.details a:visited { color: #204080; }
/* Fields */
dl.fields { margin-left: 2em; margin-top: 1em;
margin-bottom: 1em; }
dl.fields dd ul { margin-left: 0em; padding-left: 0em; }
dl.fields dd ul li ul { margin-left: 2em; padding-left: 0em; }
div.fields { margin-left: 2em; }
div.fields p { margin-bottom: 0.5em; }
/* Index tables (identifier index, term index, etc)
* - link-index is used for indices containing lists of links
* (namely, the identifier index & term index).
* - index-where is used in link indices for the text indicating
* the container/source for each link.
* - metadata-index is used for indices containing metadata
* extracted from fields (namely, the bug index & todo index).
*/
table.link-index { border-collapse: collapse;
background: #e8f0f8; color: #000000;
border: 1px solid #608090; }
td.link-index { border-width: 0px; }
table.link-index a:link { color: #0000ff; }
table.link-index a:visited { color: #204080; }
span.index-where { font-size: 70%; }
table.metadata-index { border-collapse: collapse;
background: #e8f0f8; color: #000000;
border: 1px solid #608090;
margin: .2em 0 0 0; }
td.metadata-index { border-width: 1px; border-style: solid; }
table.metadata-index a:link { color: #0000ff; }
table.metadata-index a:visited { color: #204080; }
/* Function signatures
* - sig* is used for the signature in the details section.
* - .summary-sig* is used for the signature in the summary
* table, and when listing property accessor functions.
* */
.sig-name { color: #006080; }
.sig-arg { color: #008060; }
.sig-default { color: #602000; }
.summary-sig { font-family: monospace; }
.summary-sig-name { color: #006080; font-weight: bold; }
table.summary a.summary-sig-name:link
{ color: #006080; font-weight: bold; }
table.summary a.summary-sig-name:visited
{ color: #006080; font-weight: bold; }
.summary-sig-arg { color: #006040; }
.summary-sig-default { color: #501800; }
/* Subclass list
*/
ul.subclass-list { display: inline; }
ul.subclass-list li { display: inline; }
/* To render variables, classes etc. like functions */
table.summary .summary-name { color: #006080; font-weight: bold;
font-family: monospace; }
table.summary
a.summary-name:link { color: #006080; font-weight: bold;
font-family: monospace; }
table.summary
a.summary-name:visited { color: #006080; font-weight: bold;
font-family: monospace; }
/* Variable values
* - In the 'variable details' sections, each varaible's value is
* listed in a 'pre.variable' box. The width of this box is
* restricted to 80 chars; if the value's repr is longer than
* this it will be wrapped, using a backslash marked with
* class 'variable-linewrap'. If the value's repr is longer
* than 3 lines, the rest will be ellided; and an ellipsis
* marker ('...' marked with 'variable-ellipsis') will be used.
* - If the value is a string, its quote marks will be marked
* with 'variable-quote'.
* - If the variable is a regexp, it is syntax-highlighted using
* the re* CSS classes.
*/
pre.variable { padding: .5em; margin: 0;
background: #dce4ec; color: #000000;
border: 1px solid #708890; }
.variable-linewrap { color: #604000; font-weight: bold; }
.variable-ellipsis { color: #604000; font-weight: bold; }
.variable-quote { color: #604000; font-weight: bold; }
.variable-group { color: #008000; font-weight: bold; }
.variable-op { color: #604000; font-weight: bold; }
.variable-string { color: #006030; }
.variable-unknown { color: #a00000; font-weight: bold; }
.re { color: #000000; }
.re-char { color: #006030; }
.re-op { color: #600000; }
.re-group { color: #003060; }
.re-ref { color: #404040; }
/* Base tree
* - Used by class pages to display the base class hierarchy.
*/
pre.base-tree { font-size: 80%; margin: 0; }
/* Frames-based table of contents headers
* - Consists of two frames: one for selecting modules; and
* the other listing the contents of the selected module.
* - h1.toc is used for each frame's heading
* - h2.toc is used for subheadings within each frame.
*/
h1.toc { text-align: center; font-size: 105%;
margin: 0; font-weight: bold;
padding: 0; }
h2.toc { font-size: 100%; font-weight: bold;
margin: 0.5em 0 0 -0.3em; }
/* Syntax Highlighting for Source Code
* - doctest examples are displayed in a 'pre.py-doctest' block.
* If the example is in a details table entry, then it will use
* the colors specified by the 'table pre.py-doctest' line.
* - Source code listings are displayed in a 'pre.py-src' block.
* Each line is marked with 'span.py-line' (used to draw a line
* down the left margin, separating the code from the line
* numbers). Line numbers are displayed with 'span.py-lineno'.
* The expand/collapse block toggle button is displayed with
* 'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
* modify the font size of the text.)
* - If a source code page is opened with an anchor, then the
* corresponding code block will be highlighted. The code
* block's header is highlighted with 'py-highlight-hdr'; and
* the code block's body is highlighted with 'py-highlight'.
* - The remaining py-* classes are used to perform syntax
* highlighting (py-string for string literals, py-name for names,
* etc.)
*/
pre.py-doctest { padding: .5em; margin: 1em;
background: #e8f0f8; color: #000000;
border: 1px solid #708890; }
table pre.py-doctest { background: #dce4ec;
color: #000000; }
pre.py-src { border: 2px solid #000000;
background: #f0f0f0; color: #000000; }
.py-line { border-left: 2px solid #000000;
margin-left: .2em; padding-left: .4em; }
.py-lineno { font-style: italic; font-size: 90%;
padding-left: .5em; }
a.py-toggle { text-decoration: none; }
div.py-highlight-hdr { border-top: 2px solid #000000;
border-bottom: 2px solid #000000;
background: #d8e8e8; }
div.py-highlight { border-bottom: 2px solid #000000;
background: #d0e0e0; }
.py-prompt { color: #005050; font-weight: bold;}
.py-more { color: #005050; font-weight: bold;}
.py-string { color: #006030; }
.py-comment { color: #003060; }
.py-keyword { color: #600000; }
.py-output { color: #404040; }
.py-name { color: #000050; }
.py-name:link { color: #000050 !important; }
.py-name:visited { color: #000050 !important; }
.py-number { color: #005000; }
.py-defname { color: #000060; font-weight: bold; }
.py-def-name { color: #000060; font-weight: bold; }
.py-base-class { color: #000060; }
.py-param { color: #000060; }
.py-docstring { color: #006030; }
.py-decorator { color: #804020; }
/* Use this if you don't want links to names underlined: */
/*a.py-name { text-decoration: none; }*/
/* Graphs & Diagrams
* - These CSS styles are used for graphs & diagrams generated using
* Graphviz dot. 'img.graph-without-title' is used for bare
* diagrams (to remove the border created by making the image
* clickable).
*/
img.graph-without-title { border: none; }
img.graph-with-title { border: 1px solid #000000; }
span.graph-title { font-weight: bold; }
span.graph-caption { }
/* General-purpose classes
* - 'p.indent-wrapped-lines' defines a paragraph whose first line
* is not indented, but whose subsequent lines are.
* - The 'nomargin-top' class is used to remove the top margin (e.g.
* from lists). The 'nomargin' class is used to remove both the
* top and bottom margin (but not the left or right margin --
* for lists, that would cause the bullets to disappear.)
*/
p.indent-wrapped-lines { padding: 0 0 0 7em; text-indent: -7em;
margin: 0; }
.nomargin-top { margin-top: 0; }
.nomargin { margin-top: 0; margin-bottom: 0; }
/* HTML Log */
div.log-block { padding: 0; margin: .5em 0 .5em 0;
background: #e8f0f8; color: #000000;
border: 1px solid #000000; }
div.log-error { padding: .1em .3em .1em .3em; margin: 4px;
background: #ffb0b0; color: #000000;
border: 1px solid #000000; }
div.log-warning { padding: .1em .3em .1em .3em; margin: 4px;
background: #ffffb0; color: #000000;
border: 1px solid #000000; }
div.log-info { padding: .1em .3em .1em .3em; margin: 4px;
background: #b0ffb0; color: #000000;
border: 1px solid #000000; }
h2.log-hdr { background: #70b0ff; color: #000000;
margin: 0; padding: 0em 0.5em 0em 0.5em;
border-bottom: 1px solid #000000; font-size: 110%; }
p.log { font-weight: bold; margin: .5em 0 .5em 0; }
tr.opt-changed { color: #000000; font-weight: bold; }
tr.opt-default { color: #606060; }
pre.log { margin: 0; padding: 0; padding-left: 1em; }

View File

@ -0,0 +1,293 @@
function toggle_private() {
// Search for any private/public links on this page. Store
// their old text in "cmd," so we will know what action to
// take; and change their text to the opposite action.
var cmd = "?";
var elts = document.getElementsByTagName("a");
for(var i=0; i<elts.length; i++) {
if (elts[i].className == "privatelink") {
cmd = elts[i].innerHTML;
elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?
"hide&nbsp;private":"show&nbsp;private");
}
}
// Update all DIVs containing private objects.
var elts = document.getElementsByTagName("div");
for(var i=0; i<elts.length; i++) {
if (elts[i].className == "private") {
elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
}
else if (elts[i].className == "public") {
elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"block":"none");
}
}
// Update all table rows containing private objects. Note, we
// use "" instead of "block" becaue IE & firefox disagree on what
// this should be (block vs table-row), and "" just gives the
// default for both browsers.
var elts = document.getElementsByTagName("tr");
for(var i=0; i<elts.length; i++) {
if (elts[i].className == "private") {
elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");
}
}
// Update all list items containing private objects.
var elts = document.getElementsByTagName("li");
for(var i=0; i<elts.length; i++) {
if (elts[i].className == "private") {
elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?
"none":"");
}
}
// Update all list items containing private objects.
var elts = document.getElementsByTagName("ul");
for(var i=0; i<elts.length; i++) {
if (elts[i].className == "private") {
elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
}
}
// Set a cookie to remember the current option.
document.cookie = "EpydocPrivate="+cmd;
}
function show_private() {
var elts = document.getElementsByTagName("a");
for(var i=0; i<elts.length; i++) {
if (elts[i].className == "privatelink") {
cmd = elts[i].innerHTML;
if (cmd && cmd.substr(0,4)=="show")
toggle_private();
}
}
}
function getCookie(name) {
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1) {
begin = dc.indexOf(prefix);
if (begin != 0) return null;
} else
{ begin += 2; }
var end = document.cookie.indexOf(";", begin);
if (end == -1)
{ end = dc.length; }
return unescape(dc.substring(begin + prefix.length, end));
}
function setFrame(url1, url2) {
parent.frames[1].location.href = url1;
parent.frames[2].location.href = url2;
}
function checkCookie() {
var cmd=getCookie("EpydocPrivate");
if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)
toggle_private();
}
function toggleCallGraph(id) {
var elt = document.getElementById(id);
if (elt.style.display == "none")
elt.style.display = "block";
else
elt.style.display = "none";
}
function expand(id) {
var elt = document.getElementById(id+"-expanded");
if (elt) elt.style.display = "block";
var elt = document.getElementById(id+"-expanded-linenums");
if (elt) elt.style.display = "block";
var elt = document.getElementById(id+"-collapsed");
if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
var elt = document.getElementById(id+"-collapsed-linenums");
if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
var elt = document.getElementById(id+"-toggle");
if (elt) { elt.innerHTML = "-"; }
}
function collapse(id) {
var elt = document.getElementById(id+"-expanded");
if (elt) elt.style.display = "none";
var elt = document.getElementById(id+"-expanded-linenums");
if (elt) elt.style.display = "none";
var elt = document.getElementById(id+"-collapsed-linenums");
if (elt) { elt.innerHTML = "<br />"; elt.style.display="block"; }
var elt = document.getElementById(id+"-toggle");
if (elt) { elt.innerHTML = "+"; }
var elt = document.getElementById(id+"-collapsed");
if (elt) {
elt.style.display = "block";
var indent = elt.getAttribute("indent");
var pad = elt.getAttribute("pad");
var s = "<tt class='py-lineno'>";
for (var i=0; i<pad.length; i++) { s += "&nbsp;" }
s += "</tt>";
s += "&nbsp;&nbsp;<tt class='py-line'>";
for (var i=0; i<indent.length; i++) { s += "&nbsp;" }
s += "<a href='#' onclick='expand(\"" + id;
s += "\");return false'>...</a></tt><br />";
elt.innerHTML = s;
}
}
function toggle(id) {
elt = document.getElementById(id+"-toggle");
if (elt.innerHTML == "-")
collapse(id);
else
expand(id);
return false;
}
function highlight(id) {
var elt = document.getElementById(id+"-def");
if (elt) elt.className = "py-highlight-hdr";
var elt = document.getElementById(id+"-expanded");
if (elt) elt.className = "py-highlight";
var elt = document.getElementById(id+"-collapsed");
if (elt) elt.className = "py-highlight";
}
function num_lines(s) {
var n = 1;
var pos = s.indexOf("\n");
while ( pos > 0) {
n += 1;
pos = s.indexOf("\n", pos+1);
}
return n;
}
// Collapse all blocks that mave more than `min_lines` lines.
function collapse_all(min_lines) {
var elts = document.getElementsByTagName("div");
for (var i=0; i<elts.length; i++) {
var elt = elts[i];
var split = elt.id.indexOf("-");
if (split > 0)
if (elt.id.substring(split, elt.id.length) == "-expanded")
if (num_lines(elt.innerHTML) > min_lines)
collapse(elt.id.substring(0, split));
}
}
function expandto(href) {
var start = href.indexOf("#")+1;
if (start != 0 && start != href.length) {
if (href.substring(start, href.length) != "-") {
collapse_all(4);
pos = href.indexOf(".", start);
while (pos != -1) {
var id = href.substring(start, pos);
expand(id);
pos = href.indexOf(".", pos+1);
}
var id = href.substring(start, href.length);
expand(id);
highlight(id);
}
}
}
function kill_doclink(id) {
var parent = document.getElementById(id);
parent.removeChild(parent.childNodes.item(0));
}
function auto_kill_doclink(ev) {
if (!ev) var ev = window.event;
if (!this.contains(ev.toElement)) {
var parent = document.getElementById(this.parentID);
parent.removeChild(parent.childNodes.item(0));
}
}
function doclink(id, name, targets_id) {
var elt = document.getElementById(id);
// If we already opened the box, then destroy it.
// (This case should never occur, but leave it in just in case.)
if (elt.childNodes.length > 1) {
elt.removeChild(elt.childNodes.item(0));
}
else {
// The outer box: relative + inline positioning.
var box1 = document.createElement("div");
box1.style.position = "relative";
box1.style.display = "inline";
box1.style.top = 0;
box1.style.left = 0;
// A shadow for fun
var shadow = document.createElement("div");
shadow.style.position = "absolute";
shadow.style.left = "-1.3em";
shadow.style.top = "-1.3em";
shadow.style.background = "#404040";
// The inner box: absolute positioning.
var box2 = document.createElement("div");
box2.style.position = "relative";
box2.style.border = "1px solid #a0a0a0";
box2.style.left = "-.2em";
box2.style.top = "-.2em";
box2.style.background = "white";
box2.style.padding = ".3em .4em .3em .4em";
box2.style.fontStyle = "normal";
box2.onmouseout=auto_kill_doclink;
box2.parentID = id;
// Get the targets
var targets_elt = document.getElementById(targets_id);
var targets = targets_elt.getAttribute("targets");
var links = "";
target_list = targets.split(",");
for (var i=0; i<target_list.length; i++) {
var target = target_list[i].split("=");
links += "<li><a href='" + target[1] +
"' style='text-decoration:none'>" +
target[0] + "</a></li>";
}
// Put it all together.
elt.insertBefore(box1, elt.childNodes.item(0));
//box1.appendChild(box2);
box1.appendChild(shadow);
shadow.appendChild(box2);
box2.innerHTML =
"Which <b>"+name+"</b> do you want to see documentation for?" +
"<ul style='margin-bottom: 0;'>" +
links +
"<li><a href='#' style='text-decoration:none' " +
"onclick='kill_doclink(\""+id+"\");return false;'>"+
"<i>None of the above</i></a></li></ul>";
}
return false;
}
function get_anchor() {
var href = location.href;
var start = href.indexOf("#")+1;
if ((start != 0) && (start != href.length))
return href.substring(start, href.length);
}
function redirect_url(dottedName) {
// Scan through each element of the "pages" list, and check
// if "name" matches with any of them.
for (var i=0; i<pages.length; i++) {
// Each page has the form "<pagename>-m" or "<pagename>-c";
// extract the <pagename> portion & compare it to dottedName.
var pagename = pages[i].substring(0, pages[i].length-2);
if (pagename == dottedName.substring(0,pagename.length)) {
// We've found a page that matches `dottedName`;
// construct its URL, using leftover `dottedName`
// content to form an anchor.
var pagetype = pages[i].charAt(pages[i].length-1);
var url = pagename + ((pagetype=="m")?"-module.html":
"-class.html");
if (dottedName.length > pagename.length)
url += "#" + dottedName.substring(pagename.length+1,
dottedName.length);
return url;
}
}
}

View File

@ -0,0 +1,299 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>exceptions.AssertionError</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
exceptions ::
AssertionError ::
Class&nbsp;AssertionError
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="exceptions.AssertionError-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class AssertionError</h1><p class="nomargin-top"></p>
<pre class="base-tree">
object --+
|
BaseException --+
|
Exception --+
|
StandardError --+
|
<strong class="uidshort">AssertionError</strong>
</pre>
<hr />
<p>Assertion failed.</p>
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="exceptions.AssertionError-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">...</span>)</span><br />
x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
<td align="right" valign="top">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">a new object with type S, a subtype of T</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="exceptions.AssertionError-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>,
<span class="summary-sig-arg">S</span>,
<span class="summary-sig-arg">...</span>)</span></td>
<td align="right" valign="top">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>BaseException</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__getitem__</code>,
<code>__getslice__</code>,
<code>__reduce__</code>,
<code>__repr__</code>,
<code>__setattr__</code>,
<code>__setstate__</code>,
<code>__str__</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__hash__</code>,
<code>__reduce_ex__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>BaseException</code></b>:
<code>args</code>,
<code>message</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Method Details</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-MethodDetails"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
</table>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">...</span>)</span>
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
>&nbsp;
</td>
</tr></table>
<p>x.__init__(...) initializes x; see x.__class__.__doc__ for
signature</p>
<dl class="fields">
<dt>Overrides:
object.__init__
</dt>
</dl>
</td></tr></table>
</div>
<a name="__new__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>,
<span class="sig-arg">S</span>,
<span class="sig-arg">...</span>)</span>
</h3>
</td><td align="right" valign="top"
>&nbsp;
</td>
</tr></table>
<dl class="fields">
<dt>Returns: a new object with type S, a subtype of T</dt>
<dt>Overrides:
object.__new__
</dt>
</dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title> SoundCloud API </title>
</head>
<frameset cols="20%,80%">
<frameset rows="30%,70%">
<frame src="toc.html" name="moduleListFrame"
id="moduleListFrame" />
<frame src="toc-everything.html" name="moduleFrame"
id="moduleFrame" />
</frameset>
<frame src="scapi-module.html" name="mainFrame" id="mainFrame" />
</frameset>
</html>

View File

@ -0,0 +1,278 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Help</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th bgcolor="#70b0f0" class="navbar-select"
>&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">&nbsp;</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="help.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<h1 class="epydoc"> API Documentation </h1>
<p> This document contains the API (Application Programming Interface)
documentation for SoundCloud API. Documentation for the Python
objects defined by the project is divided into separate pages for each
package, module, and class. The API documentation also includes two
pages containing information about the project as a whole: a trees
page, and an index page. </p>
<h2> Object Documentation </h2>
<p>Each <strong>Package Documentation</strong> page contains: </p>
<ul>
<li> A description of the package. </li>
<li> A list of the modules and sub-packages contained by the
package. </li>
<li> A summary of the classes defined by the package. </li>
<li> A summary of the functions defined by the package. </li>
<li> A summary of the variables defined by the package. </li>
<li> A detailed description of each function defined by the
package. </li>
<li> A detailed description of each variable defined by the
package. </li>
</ul>
<p>Each <strong>Module Documentation</strong> page contains:</p>
<ul>
<li> A description of the module. </li>
<li> A summary of the classes defined by the module. </li>
<li> A summary of the functions defined by the module. </li>
<li> A summary of the variables defined by the module. </li>
<li> A detailed description of each function defined by the
module. </li>
<li> A detailed description of each variable defined by the
module. </li>
</ul>
<p>Each <strong>Class Documentation</strong> page contains: </p>
<ul>
<li> A class inheritance diagram. </li>
<li> A list of known subclasses. </li>
<li> A description of the class. </li>
<li> A summary of the methods defined by the class. </li>
<li> A summary of the instance variables defined by the class. </li>
<li> A summary of the class (static) variables defined by the
class. </li>
<li> A detailed description of each method defined by the
class. </li>
<li> A detailed description of each instance variable defined by the
class. </li>
<li> A detailed description of each class (static) variable defined
by the class. </li>
</ul>
<h2> Project Documentation </h2>
<p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
<ul>
<li> The <em>module hierarchy</em> lists every package and module, with
modules grouped into packages. At the top level, and within each
package, modules and sub-packages are listed alphabetically. </li>
<li> The <em>class hierarchy</em> lists every class, grouped by base
class. If a class has more than one base class, then it will be
listed under each base class. At the top level, and under each base
class, classes are listed alphabetically. </li>
</ul>
<p> The <strong>Index</strong> page contains indices of terms and
identifiers: </p>
<ul>
<li> The <em>term index</em> lists every term indexed by any object's
documentation. For each term, the index provides links to each
place where the term is indexed. </li>
<li> The <em>identifier index</em> lists the (short) name of every package,
module, class, method, function, variable, and parameter. For each
identifier, the index provides a short description, and a link to
its documentation. </li>
</ul>
<h2> The Table of Contents </h2>
<p> The table of contents occupies the two frames on the left side of
the window. The upper-left frame displays the <em>project
contents</em>, and the lower-left frame displays the <em>module
contents</em>: </p>
<table class="help summary" border="1" cellspacing="0" cellpadding="3">
<tr style="height: 30%">
<td align="center" style="font-size: small">
Project<br />Contents<hr />...</td>
<td align="center" style="font-size: small" rowspan="2" width="70%">
API<br />Documentation<br />Frame<br /><br /><br />
</td>
</tr>
<tr>
<td align="center" style="font-size: small">
Module<br />Contents<hr />&nbsp;<br />...<br />&nbsp;
</td>
</tr>
</table><br />
<p> The <strong>project contents frame</strong> contains a list of all packages
and modules that are defined by the project. Clicking on an entry
will display its contents in the module contents frame. Clicking on a
special entry, labeled "Everything," will display the contents of
the entire project. </p>
<p> The <strong>module contents frame</strong> contains a list of every
submodule, class, type, exception, function, and variable defined by a
module or package. Clicking on an entry will display its
documentation in the API documentation frame. Clicking on the name of
the module, at the top of the frame, will display the documentation
for the module itself. </p>
<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
navigation bar can be used to control whether the table of contents is
displayed or not. </p>
<h2> The Navigation Bar </h2>
<p> A navigation bar is located at the top and bottom of every page.
It indicates what type of page you are currently viewing, and allows
you to go to related pages. The following table describes the labels
on the navigation bar. Note that not some labels (such as
[Parent]) are not displayed on all pages. </p>
<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
<tr class="summary">
<th>Label</th>
<th>Highlighted when...</th>
<th>Links to...</th>
</tr>
<tr><td valign="top"><strong>[Parent]</strong></td>
<td valign="top"><em>(never highlighted)</em></td>
<td valign="top"> the parent of the current package </td></tr>
<tr><td valign="top"><strong>[Package]</strong></td>
<td valign="top">viewing a package</td>
<td valign="top">the package containing the current object
</td></tr>
<tr><td valign="top"><strong>[Module]</strong></td>
<td valign="top">viewing a module</td>
<td valign="top">the module containing the current object
</td></tr>
<tr><td valign="top"><strong>[Class]</strong></td>
<td valign="top">viewing a class </td>
<td valign="top">the class containing the current object</td></tr>
<tr><td valign="top"><strong>[Trees]</strong></td>
<td valign="top">viewing the trees page</td>
<td valign="top"> the trees page </td></tr>
<tr><td valign="top"><strong>[Index]</strong></td>
<td valign="top">viewing the index page</td>
<td valign="top"> the index page </td></tr>
<tr><td valign="top"><strong>[Help]</strong></td>
<td valign="top">viewing the help page</td>
<td valign="top"> the help page </td></tr>
</table>
<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
the top navigation bar can be used to control whether documentation
for private objects is displayed. Private objects are usually defined
as objects whose (short) names begin with a single underscore, but do
not end with an underscore. For example, "<code>_x</code>",
"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
are private objects; but "<code>re.sub</code>",
"<code>__init__</code>", and "<code>type_</code>" are not. However,
if a module defines the "<code>__all__</code>" variable, then its
contents are used to decide which objects are private. </p>
<p> A timestamp below the bottom navigation bar indicates when each
page was last updated. </p>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th bgcolor="#70b0f0" class="navbar-select"
>&nbsp;&nbsp;&nbsp;Help&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,892 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Identifier Index</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th bgcolor="#70b0f0" class="navbar-select"
>&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">&nbsp;</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="identifier-index.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<table border="0" width="100%">
<tr valign="bottom"><td>
<h1 class="epydoc">Identifier Index</h1>
</td><td>
[
<a href="#A">A</a>
<a href="#B">B</a>
<a href="#C">C</a>
D
<a href="#E">E</a>
<a href="#F">F</a>
<a href="#G">G</a>
<a href="#H">H</a>
<a href="#I">I</a>
<a href="#J">J</a>
<a href="#K">K</a>
<a href="#L">L</a>
<a href="#M">M</a>
<a href="#N">N</a>
<a href="#O">O</a>
<a href="#P">P</a>
Q
<a href="#R">R</a>
<a href="#S">S</a>
<a href="#T">T</a>
<a href="#U">U</a>
V
<a href="#W">W</a>
X
Y
Z
<a href="#_">_</a>
]
</td></table>
<table border="0" width="100%">
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="A">A</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi-module.html#ACCESS_TOKEN_URL">ACCESS_TOKEN_URL</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.SCRedirectHandler-class.html#alternate_method">alternate_method</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.SCRedirectHandler-class.html" onclick="show_private();">SCRedirectHandler</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.authentication.OAuthAuthenticator-class.html#augment_request">augment_request()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication.OAuthAuthenticator-class.html">OAuthAuthenticator</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.util.MultiDict-class.html#add">add()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.util.MultiDict-class.html">MultiDict</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#API_HOST">API_HOST</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.authentication-module.html">authentication</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#ALIASES">ALIASES</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#API_HOST">API_HOST</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#AUTHENTICATOR">AUTHENTICATOR</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.Track-class.html#ALIASES">ALIASES</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.Track-class.html">Track</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests-module.html#api_logger">api_logger</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests-module.html">scapi.tests.scapi_tests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.authentication.OAuthAuthenticator-class.html#AUTHORIZATION_HEADER">AUTHORIZATION_HEADER</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication.OAuthAuthenticator-class.html">OAuthAuthenticator</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.User-class.html#ALIASES">ALIASES</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.User-class.html">User</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html">ApiConnector</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi-module.html#AUTHORIZATION_URL">AUTHORIZATION_URL</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.json._StringGenerator-class.html#all">all()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json._StringGenerator-class.html" onclick="show_private();">_StringGenerator</a>)</span></td>
<td width="33%" class="link-index"><a href="exceptions.AssertionError-class.html">AssertionError</a></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES">ALL_DOMAIN_CLASSES</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.authentication.BasicAuthenticator-class.html#augment_request">augment_request()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication.BasicAuthenticator-class.html">BasicAuthenticator</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="B">B</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.authentication.BasicAuthenticator-class.html">BasicAuthenticator</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication-module.html" onclick="show_private();">scapi.authentication</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#build_signature">build_signature()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">OAuthSignatureMethod_HMAC_SHA1</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="C">C</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.Comment-class.html">Comment</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#CONNECTOR">CONNECTOR</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#CONSUMER_SECRET">CONSUMER_SECRET</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.config-module.html">config</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER">CONSUMER</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html#CONSUMER_SECRET">CONSUMER_SECRET</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#CONFIG_NAME">CONFIG_NAME</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#CONSUMER">CONSUMER</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#create">create()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#CONFIG_NAME">CONFIG_NAME</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html#CONSUMER">CONSUMER</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#CONFIGSPEC">CONFIGSPEC</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER_SECRET">CONSUMER_SECRET</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="E">E</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.util-module.html#escape">escape()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.util-module.html" onclick="show_private();">scapi.util</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#escapes">escapes</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.Event-class.html">Event</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
</tr>
<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="F">F</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html#fetch_access_token">fetch_access_token()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.ApiConnector-class.html" onclick="show_private();">ApiConnector</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html#fetch_request_token">fetch_request_token()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.ApiConnector-class.html" onclick="show_private();">ApiConnector</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#FORBIDDEN">FORBIDDEN</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">OAuthSignatureMethod_HMAC_SHA1</a>)</span></td>
</tr>
<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="G">G</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.authentication.OAuthAuthenticator-class.html#generate_nonce">generate_nonce()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication.OAuthAuthenticator-class.html">OAuthAuthenticator</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_name">get_name()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">OAuthSignatureMethod_HMAC_SHA1</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_parameters">get_normalized_parameters()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">OAuthSignatureMethod_HMAC_SHA1</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.authentication.OAuthAuthenticator-class.html#generate_timestamp">generate_timestamp()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication.OAuthAuthenticator-class.html">OAuthAuthenticator</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_http_method">get_normalized_http_method()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">OAuthSignatureMethod_HMAC_SHA1</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html#get_request_token_authorization_url">get_request_token_authorization_url()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.ApiConnector-class.html" onclick="show_private();">ApiConnector</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#get">get()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_http_url">get_normalized_http_url()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">OAuthSignatureMethod_HMAC_SHA1</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.Group-class.html">Group</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="H">H</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#hex_digits">hex_digits</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.SCRedirectHandler-class.html#http_error_201">http_error_201()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.SCRedirectHandler-class.html" onclick="show_private();">SCRedirectHandler</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.SCRedirectHandler-class.html#http_error_303">http_error_303()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.SCRedirectHandler-class.html" onclick="show_private();">SCRedirectHandler</a>)</span></td>
</tr>
<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.InvalidMethodException-class.html">InvalidMethodException</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.util.MultiDict-class.html#iteritemslist">iteritemslist()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.util.MultiDict-class.html">MultiDict</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="J">J</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.json-module.html">json</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html">JsonReader</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json-module.html">scapi.json</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonWriter-class.html">JsonWriter</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json-module.html">scapi.json</a>)</span></td>
</tr>
<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="K">K</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.Comment-class.html#KIND">KIND</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.Comment-class.html">Comment</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.Playlist-class.html#KIND">KIND</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.Playlist-class.html">Playlist</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.User-class.html#KIND">KIND</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.User-class.html">User</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.Event-class.html#KIND">KIND</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.Event-class.html">Event</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#KIND">KIND</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.Group-class.html#KIND">KIND</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.Group-class.html">Group</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.Track-class.html#KIND">KIND</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.Track-class.html">Track</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="L">L</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html#LIST_LIMIT">LIST_LIMIT</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.ApiConnector-class.html" onclick="show_private();">ApiConnector</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#load_config">load_config()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests-module.html#logger">logger</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests-module.html">scapi.tests.scapi_tests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html#LIST_LIMIT_PARAMETER">LIST_LIMIT_PARAMETER</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.ApiConnector-class.html" onclick="show_private();">ApiConnector</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.authentication-module.html#logger">logger</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication-module.html" onclick="show_private();">scapi.authentication</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#logger">logger</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html#LIST_OFFSET_PARAMETER">LIST_OFFSET_PARAMETER</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.ApiConnector-class.html" onclick="show_private();">ApiConnector</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi-module.html#logger">logger</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html#logger">logger</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a>)</span></td>
</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="M">M</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.multidict-module.html">multidict</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.util.MultiDict-class.html">MultiDict</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.util-module.html" onclick="show_private();">scapi.util</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="N">N</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#new">new()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.NoResultFromRequest-class.html">NoResultFromRequest</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.json._StringGenerator-class.html#next">next()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json._StringGenerator-class.html" onclick="show_private();">_StringGenerator</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html#normalize_method">normalize_method()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.ApiConnector-class.html" onclick="show_private();">ApiConnector</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="O">O</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.authentication.OAuthAuthenticator-class.html#OAUTH_API_VERSION">OAUTH_API_VERSION</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication.OAuthAuthenticator-class.html">OAuthAuthenticator</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.authentication.OAuthAuthenticator-class.html">OAuthAuthenticator</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication-module.html" onclick="show_private();">scapi.authentication</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.Scope-class.html#oauth_sign_get_request">oauth_sign_get_request()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">OAuthSignatureMethod_HMAC_SHA1</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication-module.html" onclick="show_private();">scapi.authentication</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="P">P</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#PASSWORD">PASSWORD</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json._StringGenerator-class.html#peek">peek()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json._StringGenerator-class.html" onclick="show_private();">_StringGenerator</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi-module.html#PROXY">PROXY</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#PASSWORD">PASSWORD</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.Playlist-class.html">Playlist</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="R">R</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#read">read()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#REGISTRY">REGISTRY</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#ROOT">ROOT</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.json-module.html#read">read()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json-module.html">scapi.json</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi-module.html#REQUEST_TOKEN_URL">REQUEST_TOKEN_URL</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#RUN_INTERACTIVE_TESTS">RUN_INTERACTIVE_TESTS</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.json.ReadException-class.html">ReadException</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json-module.html">scapi.json</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html">RESTBase</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#RUN_INTERACTIVE_TESTS">RUN_INTERACTIVE_TESTS</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi-module.html#register_classes">register_classes()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#root">root</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="S">S</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi-module.html">scapi</a></td>
<td width="33%" class="link-index"><a href="scapi.SCRedirectHandler-class.html">SCRedirectHandler</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#setUp">setUp()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests-module.html">scapi_tests</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests-module.html">scapi.tests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#SECRET">SECRET</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#setup">setup()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests-module.html">scapi.tests.scapi_tests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#SECRET">SECRET</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.Scope-class.html">Scope</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html#SECRET">SECRET</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="T">T</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_access_token_acquisition">test_access_token_acquisition()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_load_config">test_load_config()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_setting_comments_the_way_shawn_says_its_correct">test_setting_comments_the_way_shawn_says_its_correct()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_access_token_acquisition">test_access_token_acquisition()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_me_having_stress">test_me_having_stress()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_permissions">test_setting_permissions()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html#test_base64_connect">test_base64_connect()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_me_having_stress">test_me_having_stress()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_setting_permissions">test_setting_permissions()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html">test_connect</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests-module.html">scapi.tests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_modifying_playlists">test_modifying_playlists()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_streaming">test_streaming()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_connect">test_connect()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_non_global_api">test_non_global_api()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation">test_track_creation()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_connect">test_connect()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_non_global_api">test_non_global_api()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_track_creation">test_track_creation()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_contact_add_and_removal">test_contact_add_and_removal()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html">test_oauth</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests-module.html">scapi.tests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_artwork">test_track_creation_with_artwork()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_contact_add_and_removal">test_contact_add_and_removal()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html#test_oauth_connect">test_oauth_connect()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_email_sharers">test_track_creation_with_email_sharers()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_contact_list">test_contact_list()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_oauth_get_signing">test_oauth_get_signing()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_updated_artwork">test_track_creation_with_updated_artwork()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_contact_list">test_contact_list()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_permissions">test_permissions()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_deletion">test_track_deletion()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_downloadable">test_downloadable()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_permissions">test_permissions()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_update">test_track_update()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_events">test_events()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_playlist_creation">test_playlist_creation()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_track_update">test_track_update()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_events">test_events()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_playlists">test_playlists()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_upload">test_upload()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_favorites">test_favorites()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_playlists">test_playlists()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_upload">test_upload()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_favorites">test_favorites()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_scoped_track_creation">test_scoped_track_creation()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests-module.html">tests</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_filtered_list">test_filtered_list()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_scoped_track_creation">test_scoped_track_creation()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#TOKEN">TOKEN</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_groups">test_groups()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_comments">test_setting_comments()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#TOKEN">TOKEN</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_large_list">test_large_list()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_setting_comments">test_setting_comments()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html#TOKEN">TOKEN</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#test_large_list">test_large_list()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_comments_the_way_shawn_says_its_correct">test_setting_comments_the_way_shawn_says_its_correct()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.Track-class.html">Track</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="U">U</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.UnknownContentType-class.html">UnknownContentType</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi-module.html#USE_PROXY">USE_PROXY</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#USER">USER</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.authentication-module.html#USE_DOUBLE_ESCAPE_HACK">USE_DOUBLE_ESCAPE_HACK</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication-module.html" onclick="show_private();">scapi.authentication</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.User-class.html">User</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.util-module.html">util</a><br />
<span class="index-where">(in&nbsp;<a href="scapi-module.html">scapi</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#USE_OAUTH">USE_OAUTH</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#USER">USER</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index">&nbsp;</td>
</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="W">W</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.json.JsonWriter-class.html#write">write()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonWriter-class.html">JsonWriter</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json-module.html#write">write()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json-module.html">scapi.json</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.WriteException-class.html">WriteException</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json-module.html">scapi.json</a>)</span></td>
</tr>
<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="_">_</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#__eq__">__eq__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#__setattr__">__setattr__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_next">_next()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#__getattr__">__getattr__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.Scope-class.html#__str__">__str__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_peek">_peek()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.Scope-class.html#__getattr__">__getattr__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.UnknownContentType-class.html#__str__">__str__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.UnknownContentType-class.html" onclick="show_private();">UnknownContentType</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_read">_read()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#__hash__">__hash__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonWriter-class.html#_append">_append()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonWriter-class.html">JsonWriter</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readArray">_readArray()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.ApiConnector-class.html#__init__">__init__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.ApiConnector-class.html" onclick="show_private();">ApiConnector</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#_as_arguments">_as_arguments()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readComment">_readComment()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.InvalidMethodException-class.html#__init__">__init__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.InvalidMethodException-class.html" onclick="show_private();">InvalidMethodException</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_assertNext">_assertNext()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readCStyleComment">_readCStyleComment()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#__init__">__init__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.Scope-class.html#_call">_call()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readDoubleSolidusComment">_readDoubleSolidusComment()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.Scope-class.html#__init__">__init__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#_convert_value">_convert_value()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readFalse">_readFalse()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.UnknownContentType-class.html#__init__">__init__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.UnknownContentType-class.html" onclick="show_private();">UnknownContentType</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.Scope-class.html#_create_query_string">_create_query_string()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readNull">_readNull()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.authentication.BasicAuthenticator-class.html#__init__">__init__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication.BasicAuthenticator-class.html">BasicAuthenticator</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.Scope-class.html#_create_request">_create_request()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readNumber">_readNumber()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.authentication.OAuthAuthenticator-class.html#__init__">__init__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.authentication.OAuthAuthenticator-class.html">OAuthAuthenticator</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_eatWhitespace">_eatWhitespace()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readObject">_readObject()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.json._StringGenerator-class.html#__init__">__init__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json._StringGenerator-class.html" onclick="show_private();">_StringGenerator</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.Scope-class.html#_get_connector">_get_connector()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readString">_readString()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#__ne__">__ne__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_hexDigitToInt">_hexDigitToInt()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonReader-class.html#_readTrue">_readTrue()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonReader-class.html">JsonReader</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.InvalidMethodException-class.html#__repr__">__repr__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.InvalidMethodException-class.html" onclick="show_private();">InvalidMethodException</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.scapi_tests.SCAPITests-class.html#_load_config">_load_config()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#_scope">_scope()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#__repr__">__repr__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_connect-module.html#_logger">_logger</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.RESTBase-class.html#_singleton">_singleton()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.Scope-class.html#__repr__">__repr__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.tests.test_oauth-module.html#_logger">_logger</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json._StringGenerator-class.html">_StringGenerator</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json-module.html">scapi.json</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="scapi.UnknownContentType-class.html#__repr__">__repr__()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.UnknownContentType-class.html" onclick="show_private();">UnknownContentType</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.Scope-class.html#_map">_map()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.Scope-class.html" onclick="show_private();">Scope</a>)</span></td>
<td width="33%" class="link-index"><a href="scapi.json.JsonWriter-class.html#_write">_write()</a><br />
<span class="index-where">(in&nbsp;<a href="scapi.json.JsonWriter-class.html">JsonWriter</a>)</span></td>
</tr>
</table>
</td></tr>
</table>
<br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th bgcolor="#70b0f0" class="navbar-select"
>&nbsp;&nbsp;&nbsp;Indices&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title> SoundCloud API </title>
</head>
<frameset cols="20%,80%">
<frameset rows="30%,70%">
<frame src="toc.html" name="moduleListFrame"
id="moduleListFrame" />
<frame src="toc-everything.html" name="moduleFrame"
id="moduleFrame" />
</frameset>
<frame src="scapi-module.html" name="mainFrame" id="mainFrame" />
</frameset>
</html>

View File

@ -0,0 +1,130 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Module Hierarchy</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th bgcolor="#70b0f0" class="navbar-select"
>&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">&nbsp;</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="module-tree.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<center><b>
[ <a href="module-tree.html">Module Hierarchy</a>
| <a href="class-tree.html">Class Hierarchy</a> ]
</b></center><br />
<h1 class="epydoc">Module Hierarchy</h1>
<ul class="nomargin-top">
<li> <strong class="uidlink"><a href="scapi-module.html">scapi</a></strong>
<ul>
<li class="private"> <strong class="uidlink"><a href="scapi.authentication-module.html" onclick="show_private();">scapi.authentication</a></strong> </li>
<li> <strong class="uidlink"><a href="scapi.config-module.html">scapi.config</a></strong> </li>
<li> <strong class="uidlink"><a href="scapi.json-module.html">scapi.json</a></strong> </li>
<li> <strong class="uidlink"><a href="scapi.multidict-module.html">scapi.multidict</a></strong> </li>
<li> <strong class="uidlink"><a href="scapi.tests-module.html">scapi.tests</a></strong>
<ul>
<li> <strong class="uidlink"><a href="scapi.tests.scapi_tests-module.html">scapi.tests.scapi_tests</a></strong> </li>
<li> <strong class="uidlink"><a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a></strong> </li>
<li> <strong class="uidlink"><a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a></strong> </li>
</ul>
</li>
<li class="private"> <strong class="uidlink"><a href="scapi.util-module.html" onclick="show_private();">scapi.util</a></strong> </li>
</ul>
</li>
</ul>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th bgcolor="#70b0f0" class="navbar-select"
>&nbsp;&nbsp;&nbsp;Trees&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,38 @@
<html><head><title>Epydoc Redirect Page</title>
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="pragma" content="no-cache" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body>
<script type="text/javascript">
<!--
var pages = ["scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-c", "scapi.authentication.BasicAuthenticator-c", "scapi.authentication.OAuthAuthenticator-c", "scapi.tests.scapi_tests.SCAPITests-c", "scapi.InvalidMethodException-c", "scapi.json._StringGenerator-c", "exceptions.AssertionError-c", "scapi.NoResultFromRequest-c", "scapi.json.WriteException-c", "scapi.tests.test_connect-m", "scapi.UnknownContentType-c", "scapi.json.ReadException-c", "scapi.tests.scapi_tests-m", "scapi.SCRedirectHandler-c", "scapi.tests.test_oauth-m", "scapi.json.JsonReader-c", "scapi.json.JsonWriter-c", "scapi.authentication-m", "scapi.util.MultiDict-c", "scapi.ApiConnector-c", "scapi.multidict-m", "scapi.Playlist-c", "scapi.RESTBase-c", "scapi.Comment-c", "scapi.config-m", "scapi.tests-m", "scapi.Event-c", "scapi.Group-c", "scapi.Scope-c", "scapi.Track-c", "scapi.json-m", "scapi.util-m", "scapi.User-c", "scapi-m"];
var dottedName = get_anchor();
if (dottedName) {
var target = redirect_url(dottedName);
if (target) window.location.replace(target);
}
// -->
</script>
<h3>Epydoc Auto-redirect page</h3>
<p>When javascript is enabled, this page will redirect URLs of
the form <tt>redirect.html#<i>dotted.name</i></tt> to the
documentation for the object with the given fully-qualified
dotted name.</p>
<p><a id="message"> &nbsp; </a></p>
<script type="text/javascript">
<!--
if (dottedName) {
var msg = document.getElementById("message");
msg.innerHTML = "No documentation found for <tt>"+
dottedName+"</tt>";
}
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,444 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th bgcolor="#70b0f0" class="navbar-select"
>&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
Package&nbsp;scapi
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi-module.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== PACKAGE DESCRIPTION ==================== -->
<h1 class="epydoc">Package scapi</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html">source&nbsp;code</a></span></p>
<!-- ==================== SUBMODULES ==================== -->
<a name="section-Submodules"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Submodules</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Submodules"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="summary">
<ul class="nomargin">
<li class="private"> <strong class="uidlink"><a href="scapi.authentication-module.html" onclick="show_private();">scapi.authentication</a></strong> </li>
<li> <strong class="uidlink"><a href="scapi.config-module.html">scapi.config</a></strong> </li>
<li> <strong class="uidlink"><a href="scapi.json-module.html">scapi.json</a></strong> </li>
<li> <strong class="uidlink"><a href="scapi.multidict-module.html">scapi.multidict</a></strong> </li>
<li> <strong class="uidlink"><a href="scapi.tests-module.html">scapi.tests</a></strong>
<ul>
<li> <strong class="uidlink"><a href="scapi.tests.scapi_tests-module.html">scapi.tests.scapi_tests</a></strong> </li>
<li> <strong class="uidlink"><a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a></strong> </li>
<li> <strong class="uidlink"><a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a></strong> </li>
</ul>
</li>
<li class="private"> <strong class="uidlink"><a href="scapi.util-module.html" onclick="show_private();">scapi.util</a></strong> </li>
</ul></td></tr>
</table>
<br />
<!-- ==================== CLASSES ==================== -->
<a name="section-Classes"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Classes</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Classes"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.ApiConnector-class.html" class="summary-name" onclick="show_private();">ApiConnector</a><br />
The ApiConnector holds all the data necessary to authenticate
against the soundcloud-api.
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.Comment-class.html" class="summary-name">Comment</a><br />
A comment domain object/resource.
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.Event-class.html" class="summary-name">Event</a><br />
A event domain object/resource.
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.Group-class.html" class="summary-name">Group</a><br />
A group domain object/resource
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.InvalidMethodException-class.html" class="summary-name" onclick="show_private();">InvalidMethodException</a>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.NoResultFromRequest-class.html" class="summary-name" onclick="show_private();">NoResultFromRequest</a>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.Playlist-class.html" class="summary-name">Playlist</a><br />
A playlist/set domain object/resource
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.RESTBase-class.html" class="summary-name" onclick="show_private();">RESTBase</a><br />
The baseclass for all our domain-objects/resources.
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.SCRedirectHandler-class.html" class="summary-name" onclick="show_private();">SCRedirectHandler</a><br />
A urllib2-Handler to deal with the redirects the RESTful API of SC
uses.
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.Scope-class.html" class="summary-name" onclick="show_private();">Scope</a><br />
The basic means to query and create resources.
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.Track-class.html" class="summary-name">Track</a><br />
A track domain object/resource.
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.UnknownContentType-class.html" class="summary-name" onclick="show_private();">UnknownContentType</a>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.User-class.html" class="summary-name">User</a><br />
A user domain object/resource.
</td>
</tr>
</table>
<!-- ==================== FUNCTIONS ==================== -->
<a name="section-Functions"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Functions</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Functions"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="register_classes"></a><span class="summary-sig-name">register_classes</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#register_classes">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!-- ==================== VARIABLES ==================== -->
<a name="section-Variables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Variables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi-module.html#ACCESS_TOKEN_URL" class="summary-name">ACCESS_TOKEN_URL</a> = <code title="'http://api.soundcloud.com/oauth/access_token'"><code class="variable-quote">'</code><code class="variable-string">http://api.soundcloud.com/oauth/ac</code><code class="variable-ellipsis">...</code></code><br />
The url Soundcould offers to make users authorize a concrete request
token.
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi-module.html#AUTHORIZATION_URL" class="summary-name">AUTHORIZATION_URL</a> = <code title="'http://api.soundcloud.com/oauth/authorize'"><code class="variable-quote">'</code><code class="variable-string">http://api.soundcloud.com/oauth/a</code><code class="variable-ellipsis">...</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="PROXY"></a><span class="summary-name">PROXY</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code><br />
The url Soundcould offers to obtain request-tokens
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi-module.html#REQUEST_TOKEN_URL" class="summary-name">REQUEST_TOKEN_URL</a> = <code title="'http://api.soundcloud.com/oauth/request_token'"><code class="variable-quote">'</code><code class="variable-string">http://api.soundcloud.com/oauth/r</code><code class="variable-ellipsis">...</code></code><br />
The url Soundcould offers to exchange access-tokens for
request-tokens.
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="USE_PROXY"></a><span class="summary-name">USE_PROXY</span> = <code title="False">False</code><br />
Something like http://127.0.0.1:10000/
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(&quot;scapi&quot;)">logging.getLogger(&quot;scapi&quot;)</code>
</td>
</tr>
</table>
<!-- ==================== VARIABLES DETAILS ==================== -->
<a name="section-VariablesDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Variables Details</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-VariablesDetails"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
</table>
<a name="ACCESS_TOKEN_URL"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<h3 class="epydoc">ACCESS_TOKEN_URL</h3>
<p>The url Soundcould offers to make users authorize a concrete request
token.</p>
<dl class="fields">
</dl>
<dl class="fields">
<dt>Value:</dt>
<dd><table><tr><td><pre class="variable">
<code class="variable-quote">'</code><code class="variable-string">http://api.soundcloud.com/oauth/access_token</code><code class="variable-quote">'</code>
</pre></td></tr></table>
</dd>
</dl>
</td></tr></table>
</div>
<a name="AUTHORIZATION_URL"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<h3 class="epydoc">AUTHORIZATION_URL</h3>
<dl class="fields">
</dl>
<dl class="fields">
<dt>Value:</dt>
<dd><table><tr><td><pre class="variable">
<code class="variable-quote">'</code><code class="variable-string">http://api.soundcloud.com/oauth/authorize</code><code class="variable-quote">'</code>
</pre></td></tr></table>
</dd>
</dl>
</td></tr></table>
</div>
<a name="REQUEST_TOKEN_URL"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<h3 class="epydoc">REQUEST_TOKEN_URL</h3>
<p>The url Soundcould offers to exchange access-tokens for
request-tokens.</p>
<dl class="fields">
</dl>
<dl class="fields">
<dt>Value:</dt>
<dd><table><tr><td><pre class="variable">
<code class="variable-quote">'</code><code class="variable-string">http://api.soundcloud.com/oauth/request_token</code><code class="variable-quote">'</code>
</pre></td></tr></table>
</dd>
</dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th bgcolor="#70b0f0" class="navbar-select"
>&nbsp;&nbsp;&nbsp;Home&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,544 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.ApiConnector</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Class&nbsp;ApiConnector
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.ApiConnector-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class ApiConnector</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#ApiConnector">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
<strong class="uidshort">ApiConnector</strong>
</pre>
<hr />
<p>The ApiConnector holds all the data necessary to authenticate against
the soundcloud-api. You can instantiate several connectors if you like,
but usually one should be sufficient.</p>
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.ApiConnector-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">host</span>,
<span class="summary-sig-arg">user</span>=<span class="summary-sig-default">None</span>,
<span class="summary-sig-arg">password</span>=<span class="summary-sig-default">None</span>,
<span class="summary-sig-arg">authenticator</span>=<span class="summary-sig-default">None</span>,
<span class="summary-sig-arg">base</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
<span class="summary-sig-arg">collapse_scope</span>=<span class="summary-sig-default">True</span>)</span><br />
Constructor for the API-Singleton.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#ApiConnector.__init__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.ApiConnector-class.html#normalize_method" class="summary-sig-name">normalize_method</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">method</span>)</span><br />
This method will take a method that has been part of a redirect of
some sort and see if it's valid, which means that it's located
beneath our base.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#ApiConnector.normalize_method">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.ApiConnector-class.html#fetch_request_token" class="summary-sig-name">fetch_request_token</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">url</span>=<span class="summary-sig-default">None</span>,
<span class="summary-sig-arg">oauth_callback</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">oob</code><code class="variable-quote">'</code></span>,
<span class="summary-sig-arg">oauth_verifier</span>=<span class="summary-sig-default">None</span>)</span><br />
Helper-function for a registered consumer to obtain a request token,
as used by oauth.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#ApiConnector.fetch_request_token">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.ApiConnector-class.html#fetch_access_token" class="summary-sig-name">fetch_access_token</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">oauth_verifier</span>)</span><br />
Helper-function for a registered consumer to exchange an access token
for a request token.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#ApiConnector.fetch_access_token">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.ApiConnector-class.html#get_request_token_authorization_url" class="summary-sig-name">get_request_token_authorization_url</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">token</span>)</span><br />
Simple helper function to generate the url needed to ask a user for
request token authorization.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#ApiConnector.get_request_token_authorization_url">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__hash__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__repr__</code>,
<code>__setattr__</code>,
<code>__str__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="LIST_LIMIT"></a><span class="summary-name">LIST_LIMIT</span> = <code title="50">50</code><br />
The query-parameter that is used to request results beginning from a
certain offset.
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.ApiConnector-class.html#LIST_OFFSET_PARAMETER" class="summary-name">LIST_OFFSET_PARAMETER</a> = <code title="'offset'"><code class="variable-quote">'</code><code class="variable-string">offset</code><code class="variable-quote">'</code></code><br />
The query-parameter that is used to request results being limited to
a certain amount.
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="LIST_LIMIT_PARAMETER"></a><span class="summary-name">LIST_LIMIT_PARAMETER</span> = <code title="'limit'"><code class="variable-quote">'</code><code class="variable-string">limit</code><code class="variable-quote">'</code></code>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Method Details</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-MethodDetails"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
</table>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">host</span>,
<span class="sig-arg">user</span>=<span class="sig-default">None</span>,
<span class="sig-arg">password</span>=<span class="sig-default">None</span>,
<span class="sig-arg">authenticator</span>=<span class="sig-default">None</span>,
<span class="sig-arg">base</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>,
<span class="sig-arg">collapse_scope</span>=<span class="sig-default">True</span>)</span>
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#ApiConnector.__init__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>Constructor for the API-Singleton. Use it once with parameters, and
then the subsequent calls internal to the API will work.</p>
<dl class="fields">
<dt>Parameters:</dt>
<dd><ul class="nomargin-top">
<li><strong class="pname"><code>host</code></strong> (str) - the host to connect to, e.g. &quot;api.soundcloud.com&quot;. If a
port is needed, use &quot;api.soundcloud.com:1234&quot;</li>
<li><strong class="pname"><code>user</code></strong> (str) - if given, the username for basic HTTP authentication</li>
<li><strong class="pname"><code>password</code></strong> (str) - if the user is given, you have to give a password as well</li>
<li><strong class="pname"><code>authenticator</code></strong> (OAuthAuthenticator | BasicAuthenticator) - the authenticator to use, see <a
href="scapi.authentication-module.html" class="link"
onclick="show_private();">scapi.authentication</a></li>
</ul></dd>
<dt>Overrides:
object.__init__
</dt>
</dl>
</td></tr></table>
</div>
<a name="normalize_method"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">normalize_method</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">method</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#ApiConnector.normalize_method">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>This method will take a method that has been part of a redirect of
some sort and see if it's valid, which means that it's located beneath
our base. If yes, we return it normalized without that very base.</p>
<dl class="fields">
</dl>
</td></tr></table>
</div>
<a name="fetch_request_token"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">fetch_request_token</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">url</span>=<span class="sig-default">None</span>,
<span class="sig-arg">oauth_callback</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">oob</code><code class="variable-quote">'</code></span>,
<span class="sig-arg">oauth_verifier</span>=<span class="sig-default">None</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#ApiConnector.fetch_request_token">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>Helper-function for a registered consumer to obtain a request token,
as used by oauth.</p>
<p>Use it like this:</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span>oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER,
<span class="py-output"> CONSUMER_SECRET,</span>
<span class="py-output"> None, </span>
<span class="py-output"> None)</span></pre>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span>sca = scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator)
<span class="py-prompt">&gt;&gt;&gt; </span>token, secret = sca.fetch_request_token()
<span class="py-prompt">&gt;&gt;&gt; </span>authorization_url = sca.get_request_token_authorization_url(token)</pre>
<p>Please note the None passed as token &amp; secret to the
authenticator.</p>
<dl class="fields">
</dl>
</td></tr></table>
</div>
<a name="fetch_access_token"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">fetch_access_token</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">oauth_verifier</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#ApiConnector.fetch_access_token">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>Helper-function for a registered consumer to exchange an access token
for a request token.</p>
<p>Use it like this:</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span>oauth_authenticator = scapi.authentication.OAuthAuthenticator(CONSUMER,
<span class="py-output"> CONSUMER_SECRET,</span>
<span class="py-output"> request_token, </span>
<span class="py-output"> request_token_secret)</span></pre>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span>sca = scapi.ApiConnector(host=API_HOST, authenticator=oauth_authenticator)
<span class="py-prompt">&gt;&gt;&gt; </span>token, secret = sca.fetch_access_token()</pre>
<p>Please note the values passed as token &amp; secret to the
authenticator.</p>
<dl class="fields">
</dl>
</td></tr></table>
</div>
<a name="get_request_token_authorization_url"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">get_request_token_authorization_url</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">token</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#ApiConnector.get_request_token_authorization_url">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>Simple helper function to generate the url needed to ask a user for
request token authorization.</p>
<p>See also <a href="scapi.ApiConnector-class.html#fetch_request_token"
class="link">fetch_request_token</a>.</p>
<p>Possible usage:</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span><span class="py-keyword">import</span> webbrowser
<span class="py-prompt">&gt;&gt;&gt; </span>sca = scapi.ApiConnector()
<span class="py-prompt">&gt;&gt;&gt; </span>authorization_url = sca.get_request_token_authorization_url(token)
<span class="py-prompt">&gt;&gt;&gt; </span>webbrowser.open(authorization_url)</pre>
<dl class="fields">
</dl>
</td></tr></table>
</div>
<br />
<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
<a name="section-ClassVariableDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variable Details</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariableDetails"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
</table>
<a name="LIST_OFFSET_PARAMETER"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<h3 class="epydoc">LIST_OFFSET_PARAMETER</h3>
<p>The query-parameter that is used to request results being limited to a
certain amount.</p>
<p>Currently this is of no use and just for completeness sake.</p>
<dl class="fields">
</dl>
<dl class="fields">
<dt>Value:</dt>
<dd><table><tr><td><pre class="variable">
<code class="variable-quote">'</code><code class="variable-string">offset</code><code class="variable-quote">'</code>
</pre></td></tr></table>
</dd>
</dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,258 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.Asset</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Class&nbsp;Asset
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.Asset-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Asset</h1><span class="codelink"><a href="scapi-pysrc.html#Asset">source&nbsp;code</a></span><br /><br />
<pre class="base-tree">
object --+
|
<a href="scapi.RESTBase-class.html">RESTBase</a> --+
|
<strong class="uidshort">Asset</strong>
</pre>
<hr />
An asset domain object/resource.<br /><br />
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#__eq__">__eq__</a></code>,
<code><a href="scapi.RESTBase-class.html#__getattr__">__getattr__</a></code>,
<code><a href="scapi.RESTBase-class.html#__hash__">__hash__</a></code>,
<code><a href="scapi.RESTBase-class.html#__init__">__init__</a></code>,
<code><a href="scapi.RESTBase-class.html#__ne__">__ne__</a></code>,
<code><a href="scapi.RESTBase-class.html#__repr__">__repr__</a></code>,
<code><a href="scapi.RESTBase-class.html#__setattr__">__setattr__</a></code>
</p>
<div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html">RESTBase</a></code></b> (private):
<code><a href="scapi.RESTBase-class.html#_as_arguments">_as_arguments</a></code>,
<code><a href="scapi.RESTBase-class.html#_convert_value">_convert_value</a></code>,
<code><a href="scapi.RESTBase-class.html#_scope">_scope</a></code>
</p></div>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__str__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== CLASS METHODS ==================== -->
<a name="section-ClassMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#create">create</a></code>,
<code><a href="scapi.RESTBase-class.html#get">get</a></code>,
<code><a href="scapi.RESTBase-class.html#new">new</a></code>
</p>
<div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html">RESTBase</a></code></b> (private):
<code><a href="scapi.RESTBase-class.html#_singleton">_singleton</a></code>
</p></div>
</td>
</tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="KIND"></a><span class="summary-name">KIND</span> = <code title="'assets'"><code class="variable-quote">'</code><code class="variable-string">assets</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#ALIASES">ALIASES</a></code>,
<code><a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES">ALL_DOMAIN_CLASSES</a></code>,
<code><a href="scapi.RESTBase-class.html#REGISTRY">REGISTRY</a></code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0beta1 on Fri Apr 18 16:28:18 2008
</td>
<td align="right" class="footer">
<a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie()
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,258 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.Comment</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Class&nbsp;Comment
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.Comment-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Comment</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#Comment">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a> --+
|
<strong class="uidshort">Comment</strong>
</pre>
<hr />
<p>A comment domain object/resource.</p>
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#__eq__">__eq__</a></code>,
<code><a href="scapi.RESTBase-class.html#__getattr__">__getattr__</a></code>,
<code><a href="scapi.RESTBase-class.html#__hash__">__hash__</a></code>,
<code><a href="scapi.RESTBase-class.html#__init__">__init__</a></code>,
<code><a href="scapi.RESTBase-class.html#__ne__">__ne__</a></code>,
<code><a href="scapi.RESTBase-class.html#__repr__">__repr__</a></code>,
<code><a href="scapi.RESTBase-class.html#__setattr__">__setattr__</a></code>
</p>
<div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private):
<code><a href="scapi.RESTBase-class.html#_as_arguments" onclick="show_private();">_as_arguments</a></code>,
<code><a href="scapi.RESTBase-class.html#_convert_value" onclick="show_private();">_convert_value</a></code>,
<code><a href="scapi.RESTBase-class.html#_scope" onclick="show_private();">_scope</a></code>
</p></div>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__str__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== CLASS METHODS ==================== -->
<a name="section-ClassMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#create">create</a></code>,
<code><a href="scapi.RESTBase-class.html#get">get</a></code>,
<code><a href="scapi.RESTBase-class.html#new">new</a></code>
</p>
<div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private):
<code><a href="scapi.RESTBase-class.html#_singleton" onclick="show_private();">_singleton</a></code>
</p></div>
</td>
</tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="KIND"></a><span class="summary-name">KIND</span> = <code title="'comments'"><code class="variable-quote">'</code><code class="variable-string">comments</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#ALIASES">ALIASES</a></code>,
<code><a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES">ALL_DOMAIN_CLASSES</a></code>,
<code><a href="scapi.RESTBase-class.html#REGISTRY">REGISTRY</a></code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,258 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.Event</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Class&nbsp;Event
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.Event-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Event</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#Event">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a> --+
|
<strong class="uidshort">Event</strong>
</pre>
<hr />
<p>A event domain object/resource.</p>
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#__eq__">__eq__</a></code>,
<code><a href="scapi.RESTBase-class.html#__getattr__">__getattr__</a></code>,
<code><a href="scapi.RESTBase-class.html#__hash__">__hash__</a></code>,
<code><a href="scapi.RESTBase-class.html#__init__">__init__</a></code>,
<code><a href="scapi.RESTBase-class.html#__ne__">__ne__</a></code>,
<code><a href="scapi.RESTBase-class.html#__repr__">__repr__</a></code>,
<code><a href="scapi.RESTBase-class.html#__setattr__">__setattr__</a></code>
</p>
<div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private):
<code><a href="scapi.RESTBase-class.html#_as_arguments" onclick="show_private();">_as_arguments</a></code>,
<code><a href="scapi.RESTBase-class.html#_convert_value" onclick="show_private();">_convert_value</a></code>,
<code><a href="scapi.RESTBase-class.html#_scope" onclick="show_private();">_scope</a></code>
</p></div>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__str__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== CLASS METHODS ==================== -->
<a name="section-ClassMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#create">create</a></code>,
<code><a href="scapi.RESTBase-class.html#get">get</a></code>,
<code><a href="scapi.RESTBase-class.html#new">new</a></code>
</p>
<div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private):
<code><a href="scapi.RESTBase-class.html#_singleton" onclick="show_private();">_singleton</a></code>
</p></div>
</td>
</tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="KIND"></a><span class="summary-name">KIND</span> = <code title="'events'"><code class="variable-quote">'</code><code class="variable-string">events</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#ALIASES">ALIASES</a></code>,
<code><a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES">ALL_DOMAIN_CLASSES</a></code>,
<code><a href="scapi.RESTBase-class.html#REGISTRY">REGISTRY</a></code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,258 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.Group</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Class&nbsp;Group
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.Group-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Group</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#Group">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a> --+
|
<strong class="uidshort">Group</strong>
</pre>
<hr />
<p>A group domain object/resource</p>
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#__eq__">__eq__</a></code>,
<code><a href="scapi.RESTBase-class.html#__getattr__">__getattr__</a></code>,
<code><a href="scapi.RESTBase-class.html#__hash__">__hash__</a></code>,
<code><a href="scapi.RESTBase-class.html#__init__">__init__</a></code>,
<code><a href="scapi.RESTBase-class.html#__ne__">__ne__</a></code>,
<code><a href="scapi.RESTBase-class.html#__repr__">__repr__</a></code>,
<code><a href="scapi.RESTBase-class.html#__setattr__">__setattr__</a></code>
</p>
<div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private):
<code><a href="scapi.RESTBase-class.html#_as_arguments" onclick="show_private();">_as_arguments</a></code>,
<code><a href="scapi.RESTBase-class.html#_convert_value" onclick="show_private();">_convert_value</a></code>,
<code><a href="scapi.RESTBase-class.html#_scope" onclick="show_private();">_scope</a></code>
</p></div>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__str__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== CLASS METHODS ==================== -->
<a name="section-ClassMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#create">create</a></code>,
<code><a href="scapi.RESTBase-class.html#get">get</a></code>,
<code><a href="scapi.RESTBase-class.html#new">new</a></code>
</p>
<div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private):
<code><a href="scapi.RESTBase-class.html#_singleton" onclick="show_private();">_singleton</a></code>
</p></div>
</td>
</tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="KIND"></a><span class="summary-name">KIND</span> = <code title="'groups'"><code class="variable-quote">'</code><code class="variable-string">groups</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#ALIASES">ALIASES</a></code>,
<code><a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES">ALL_DOMAIN_CLASSES</a></code>,
<code><a href="scapi.RESTBase-class.html#REGISTRY">REGISTRY</a></code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,297 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.InvalidMethodException</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Class&nbsp;InvalidMethodException
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.InvalidMethodException-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class InvalidMethodException</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#InvalidMethodException">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
exceptions.BaseException --+
|
exceptions.Exception --+
|
<strong class="uidshort">InvalidMethodException</strong>
</pre>
<hr />
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.InvalidMethodException-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">message</span>)</span><br />
x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#InvalidMethodException.__init__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.InvalidMethodException-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br />
repr(x)</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#InvalidMethodException.__repr__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
<code>__new__</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__getitem__</code>,
<code>__getslice__</code>,
<code>__reduce__</code>,
<code>__setattr__</code>,
<code>__setstate__</code>,
<code>__str__</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__hash__</code>,
<code>__reduce_ex__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
<code>args</code>,
<code>message</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Method Details</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-MethodDetails"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
</table>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">message</span>)</span>
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#InvalidMethodException.__init__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>x.__init__(...) initializes x; see x.__class__.__doc__ for
signature</p>
<dl class="fields">
<dt>Overrides:
object.__init__
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<a name="__repr__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
<br /><em class="fname">(Representation operator)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#InvalidMethodException.__repr__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>repr(x)</p>
<dl class="fields">
<dt>Overrides:
object.__repr__
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,195 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.NoResultFromRequest</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Class&nbsp;NoResultFromRequest
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.NoResultFromRequest-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class NoResultFromRequest</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#NoResultFromRequest">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
exceptions.BaseException --+
|
exceptions.Exception --+
|
<strong class="uidshort">NoResultFromRequest</strong>
</pre>
<hr />
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
<code>__init__</code>,
<code>__new__</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__getitem__</code>,
<code>__getslice__</code>,
<code>__reduce__</code>,
<code>__repr__</code>,
<code>__setattr__</code>,
<code>__setstate__</code>,
<code>__str__</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__hash__</code>,
<code>__reduce_ex__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
<code>args</code>,
<code>message</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,258 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.Playlist</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Class&nbsp;Playlist
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.Playlist-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Playlist</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#Playlist">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a> --+
|
<strong class="uidshort">Playlist</strong>
</pre>
<hr />
<p>A playlist/set domain object/resource</p>
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#__eq__">__eq__</a></code>,
<code><a href="scapi.RESTBase-class.html#__getattr__">__getattr__</a></code>,
<code><a href="scapi.RESTBase-class.html#__hash__">__hash__</a></code>,
<code><a href="scapi.RESTBase-class.html#__init__">__init__</a></code>,
<code><a href="scapi.RESTBase-class.html#__ne__">__ne__</a></code>,
<code><a href="scapi.RESTBase-class.html#__repr__">__repr__</a></code>,
<code><a href="scapi.RESTBase-class.html#__setattr__">__setattr__</a></code>
</p>
<div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private):
<code><a href="scapi.RESTBase-class.html#_as_arguments" onclick="show_private();">_as_arguments</a></code>,
<code><a href="scapi.RESTBase-class.html#_convert_value" onclick="show_private();">_convert_value</a></code>,
<code><a href="scapi.RESTBase-class.html#_scope" onclick="show_private();">_scope</a></code>
</p></div>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__str__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== CLASS METHODS ==================== -->
<a name="section-ClassMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#create">create</a></code>,
<code><a href="scapi.RESTBase-class.html#get">get</a></code>,
<code><a href="scapi.RESTBase-class.html#new">new</a></code>
</p>
<div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private):
<code><a href="scapi.RESTBase-class.html#_singleton" onclick="show_private();">_singleton</a></code>
</p></div>
</td>
</tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="KIND"></a><span class="summary-name">KIND</span> = <code title="'playlists'"><code class="variable-quote">'</code><code class="variable-string">playlists</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#ALIASES">ALIASES</a></code>,
<code><a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES">ALL_DOMAIN_CLASSES</a></code>,
<code><a href="scapi.RESTBase-class.html#REGISTRY">REGISTRY</a></code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,895 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.RESTBase</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Class&nbsp;RESTBase
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.RESTBase-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class RESTBase</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#RESTBase">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
<strong class="uidshort">RESTBase</strong>
</pre>
<dl><dt>Known Subclasses:</dt>
<dd>
<ul class="subclass-list">
<li><a href="scapi.Comment-class.html">Comment</a></li><li>, <a href="scapi.Event-class.html">Event</a></li><li>, <a href="scapi.Group-class.html">Group</a></li><li>, <a href="scapi.Playlist-class.html">Playlist</a></li><li>, <a href="scapi.Track-class.html">Track</a></li><li>, <a href="scapi.User-class.html">User</a></li> </ul>
</dd></dl>
<hr />
<p>The baseclass for all our domain-objects/resources.</p>
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.RESTBase-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">data</span>,
<span class="summary-sig-arg">scope</span>,
<span class="summary-sig-arg">path_stack</span>=<span class="summary-sig-default">None</span>)</span><br />
x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#RESTBase.__init__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="__getattr__"></a><span class="summary-sig-name">__getattr__</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">name</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#RESTBase.__getattr__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.RESTBase-class.html#__setattr__" class="summary-sig-name">__setattr__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">name</span>,
<span class="summary-sig-arg">value</span>)</span><br />
This method is used to set a property, a resource or a list of
resources as property of the resource the method is invoked on.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#RESTBase.__setattr__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_as_arguments"></a><span class="summary-sig-name">_as_arguments</span>(<span class="summary-sig-arg">self</span>)</span><br />
Converts a resource to a argument-string the way Rails expects it.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#RESTBase._as_arguments">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_convert_value"></a><span class="summary-sig-name">_convert_value</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">value</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#RESTBase._convert_value">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.RESTBase-class.html#_scope" class="summary-sig-name" onclick="show_private();">_scope</a>(<span class="summary-sig-arg">self</span>)</span><br />
Return the scope this resource lives in, which is the KIND and id</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#RESTBase._scope">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.RESTBase-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br />
repr(x)</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#RESTBase.__repr__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.RESTBase-class.html#__hash__" class="summary-sig-name">__hash__</a>(<span class="summary-sig-arg">self</span>)</span><br />
hash(x)</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#RESTBase.__hash__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.RESTBase-class.html#__eq__" class="summary-sig-name">__eq__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">other</span>)</span><br />
Test for equality.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#RESTBase.__eq__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="__ne__"></a><span class="summary-sig-name">__ne__</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">other</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#RESTBase.__ne__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__str__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== CLASS METHODS ==================== -->
<a name="section-ClassMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.RESTBase-class.html#create" class="summary-sig-name">create</a>(<span class="summary-sig-arg">cls</span>,
<span class="summary-sig-arg">scope</span>,
<span class="summary-sig-arg">**data</span>)</span><br />
This is a convenience-method for creating an object that will be
passed as parameter - e.g.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#RESTBase.create">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.RESTBase-class.html#new" class="summary-sig-name">new</a>(<span class="summary-sig-arg">cls</span>,
<span class="summary-sig-arg">scope</span>,
<span class="summary-sig-arg">**data</span>)</span><br />
Create a new resource inside a given Scope.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#RESTBase.new">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.RESTBase-class.html#get" class="summary-sig-name">get</a>(<span class="summary-sig-arg">cls</span>,
<span class="summary-sig-arg">scope</span>,
<span class="summary-sig-arg">id</span>)</span><br />
Fetch a resource by id.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#RESTBase.get">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.RESTBase-class.html#_singleton" class="summary-sig-name" onclick="show_private();">_singleton</a>(<span class="summary-sig-arg">cls</span>)</span><br />
This method will take a resource name like &quot;users&quot; and
return the single-case, in the example &quot;user&quot;.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#RESTBase._singleton">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.RESTBase-class.html#REGISTRY" class="summary-name">REGISTRY</a> = <code title="{'comments': &lt;class 'scapi.Comment'&gt;,
'contacts': &lt;class 'scapi.User'&gt;,
'events': &lt;class 'scapi.Event'&gt;,
'favorites': &lt;class 'scapi.Track'&gt;,
'groups': &lt;class 'scapi.Group'&gt;,
'me': &lt;class 'scapi.User'&gt;,
'permissions': &lt;class 'scapi.User'&gt;,
'playlists': &lt;class 'scapi.Playlist'&gt;,
..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">comments</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'scapi.Comment'&gt;<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">contacts</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;<code class="variable-ellipsis">...</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES" class="summary-name">ALL_DOMAIN_CLASSES</a> = <code title="{'Comment': &lt;class 'scapi.Comment'&gt;,
'Event': &lt;class 'scapi.Event'&gt;,
'Group': &lt;class 'scapi.Group'&gt;,
'Playlist': &lt;class 'scapi.Playlist'&gt;,
'Track': &lt;class 'scapi.Track'&gt;,
'User': &lt;class 'scapi.User'&gt;}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">Comment</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'scapi.Comment'&gt;<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">Eve</code><code class="variable-ellipsis">...</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="ALIASES"></a><span class="summary-name">ALIASES</span> = <code title="[]"><code class="variable-group">[</code><code class="variable-group">]</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="KIND"></a><span class="summary-name">KIND</span> = <code title="None">None</code>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Method Details</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-MethodDetails"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
</table>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">data</span>,
<span class="sig-arg">scope</span>,
<span class="sig-arg">path_stack</span>=<span class="sig-default">None</span>)</span>
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#RESTBase.__init__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>x.__init__(...) initializes x; see x.__class__.__doc__ for
signature</p>
<dl class="fields">
<dt>Overrides:
object.__init__
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<a name="__setattr__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__setattr__</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">name</span>,
<span class="sig-arg">value</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#RESTBase.__setattr__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>This method is used to set a property, a resource or a list of
resources as property of the resource the method is invoked on.</p>
<p>For example, to set a comment on a track, do</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span>sca = scapi.Scope(connector)
<span class="py-prompt">&gt;&gt;&gt; </span>track = scapi.Track.new(title=<span class="py-string">'bar'</span>, sharing=<span class="py-string">&quot;private&quot;</span>)
<span class="py-prompt">&gt;&gt;&gt; </span>comment = scapi.Comment.create(body=<span class="py-string">&quot;This is the body of my comment&quot;</span>, timestamp=10)
<span class="py-prompt">&gt;&gt;&gt; </span>track.comments = comment</pre>
<p>To set a list of users as permissions, do</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span>sca = scapi.Scope(connector)
<span class="py-prompt">&gt;&gt;&gt; </span>me = sca.me()
<span class="py-prompt">&gt;&gt;&gt; </span>track = scapi.Track.new(title=<span class="py-string">'bar'</span>, sharing=<span class="py-string">&quot;private&quot;</span>)
<span class="py-prompt">&gt;&gt;&gt; </span>users = sca.users()
<span class="py-prompt">&gt;&gt;&gt; </span>users_to_set = [user <span class="py-keyword">for</span> user <span class="py-keyword">in</span> users[:10] <span class="py-keyword">if</span> user != me]
<span class="py-prompt">&gt;&gt;&gt; </span>track.permissions = users_to_set</pre>
<p>And finally, to simply change the title of a track, do</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span>sca = scapi.Scope(connector)
<span class="py-prompt">&gt;&gt;&gt; </span>track = sca.Track.get(track_id)
<span class="py-prompt">&gt;&gt;&gt; </span>track.title = <span class="py-string">&quot;new_title&quot;</span></pre>
<dl class="fields">
<dt>Parameters:</dt>
<dd><ul class="nomargin-top">
<li><strong class="pname"><code>name</code></strong> (str) - the property name</li>
<li><strong class="pname"><code>value</code></strong> (RESTBase | list&lt;RESTBase&gt; | basestring | long | int | float) - the property, resource or resources to set</li>
</ul></dd>
<dt>Returns:</dt>
<dd>None</dd>
<dt>Overrides:
object.__setattr__
</dt>
</dl>
</td></tr></table>
</div>
<a name="create"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">create</span>(<span class="sig-arg">cls</span>,
<span class="sig-arg">scope</span>,
<span class="sig-arg">**data</span>)</span>
<br /><em class="fname">Class Method</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#RESTBase.create">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>This is a convenience-method for creating an object that will be
passed as parameter - e.g. a comment. A usage would look like this:</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span>sca = scapi.Scope(connector)
<span class="py-prompt">&gt;&gt;&gt; </span>track = sca.Track.new(title=<span class="py-string">'bar'</span>, sharing=<span class="py-string">&quot;private&quot;</span>)
<span class="py-prompt">&gt;&gt;&gt; </span>comment = sca.Comment.create(body=<span class="py-string">&quot;This is the body of my comment&quot;</span>, timestamp=10)
<span class="py-prompt">&gt;&gt;&gt; </span>track.comments = comment</pre>
<dl class="fields">
</dl>
</td></tr></table>
</div>
<a name="new"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">new</span>(<span class="sig-arg">cls</span>,
<span class="sig-arg">scope</span>,
<span class="sig-arg">**data</span>)</span>
<br /><em class="fname">Class Method</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#RESTBase.new">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>Create a new resource inside a given Scope. The actual values are in
data.</p>
<p>So for creating new resources, you have two options:</p>
<ul>
<li>
create an instance directly using the class:
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span>scope = scapi.Scope(connector)
<span class="py-prompt">&gt;&gt;&gt; </span>scope.User.new(...)
<span class="py-output">&lt;scapi.User object at 0x1234&gt;</span></pre>
</li>
<li>
create a instance in a certain scope:
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span>scope = scapi.Scope(connector)
<span class="py-prompt">&gt;&gt;&gt; </span>user = scapi.User(<span class="py-string">&quot;1&quot;</span>)
<span class="py-prompt">&gt;&gt;&gt; </span>track = user.tracks.new()
<span class="py-output">&lt;scapi.Track object at 0x1234&gt;</span></pre>
</li>
</ul>
<dl class="fields">
<dt>Parameters:</dt>
<dd><ul class="nomargin-top">
<li><strong class="pname"><code>scope</code></strong> (tuple&lt;Scope&gt;[1]) - if not empty, a one-element tuple containing the Scope</li>
<li><strong class="pname"><code>data</code></strong> (dict) - the data</li>
</ul></dd>
<dt>Returns:</dt>
<dd>new instance of the resource</dd>
</dl>
</td></tr></table>
</div>
<a name="get"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">get</span>(<span class="sig-arg">cls</span>,
<span class="sig-arg">scope</span>,
<span class="sig-arg">id</span>)</span>
<br /><em class="fname">Class Method</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#RESTBase.get">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>Fetch a resource by id.</p>
<p>Simply pass a known id as argument. For example</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span>sca = scapi.Scope(connector)
<span class="py-prompt">&gt;&gt;&gt; </span>track = sca.Track.get(id)</pre>
<dl class="fields">
</dl>
</td></tr></table>
</div>
<a name="_scope"></a>
<div class="private">
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">_scope</span>(<span class="sig-arg">self</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#RESTBase._scope">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>Return the scope this resource lives in, which is the KIND and id</p>
<dl class="fields">
<dt>Returns:</dt>
<dd>&quot;&lt;KIND&gt;/&lt;id&gt;&quot;</dd>
</dl>
</td></tr></table>
</div>
<a name="_singleton"></a>
<div class="private">
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">_singleton</span>(<span class="sig-arg">cls</span>)</span>
<br /><em class="fname">Class Method</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#RESTBase._singleton">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>This method will take a resource name like &quot;users&quot; and
return the single-case, in the example &quot;user&quot;.</p>
<p>Currently, it's not very sophisticated, only strips a trailing s.</p>
<dl class="fields">
</dl>
</td></tr></table>
</div>
<a name="__repr__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
<br /><em class="fname">(Representation operator)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#RESTBase.__repr__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>repr(x)</p>
<dl class="fields">
<dt>Overrides:
object.__repr__
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<a name="__hash__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__hash__</span>(<span class="sig-arg">self</span>)</span>
<br /><em class="fname">(Hashing function)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#RESTBase.__hash__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>hash(x)</p>
<dl class="fields">
<dt>Overrides:
object.__hash__
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<a name="__eq__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__eq__</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">other</span>)</span>
<br /><em class="fname">(Equality operator)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#RESTBase.__eq__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>Test for equality.</p>
<p>Resources are considered equal if the have the same kind and id.</p>
<dl class="fields">
</dl>
</td></tr></table>
</div>
<br />
<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
<a name="section-ClassVariableDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variable Details</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariableDetails"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
</table>
<a name="REGISTRY"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<h3 class="epydoc">REGISTRY</h3>
<dl class="fields">
</dl>
<dl class="fields">
<dt>Value:</dt>
<dd><table><tr><td><pre class="variable">
<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">comments</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'scapi.Comment'&gt;<code class="variable-op">,</code>
<code class="variable-quote">'</code><code class="variable-string">contacts</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'scapi.User'&gt;<code class="variable-op">,</code>
<code class="variable-quote">'</code><code class="variable-string">events</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'scapi.Event'&gt;<code class="variable-op">,</code>
<code class="variable-quote">'</code><code class="variable-string">favorites</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'scapi.Track'&gt;<code class="variable-op">,</code>
<code class="variable-quote">'</code><code class="variable-string">groups</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'scapi.Group'&gt;<code class="variable-op">,</code>
<code class="variable-quote">'</code><code class="variable-string">me</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'scapi.User'&gt;<code class="variable-op">,</code>
<code class="variable-quote">'</code><code class="variable-string">permissions</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'scapi.User'&gt;<code class="variable-op">,</code>
<code class="variable-quote">'</code><code class="variable-string">playlists</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'scapi.Playlist'&gt;<code class="variable-op">,</code>
<code class="variable-ellipsis">...</code>
</pre></td></tr></table>
</dd>
</dl>
</td></tr></table>
</div>
<a name="ALL_DOMAIN_CLASSES"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<h3 class="epydoc">ALL_DOMAIN_CLASSES</h3>
<dl class="fields">
</dl>
<dl class="fields">
<dt>Value:</dt>
<dd><table><tr><td><pre class="variable">
<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">Comment</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'scapi.Comment'&gt;<code class="variable-op">,</code>
<code class="variable-quote">'</code><code class="variable-string">Event</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'scapi.Event'&gt;<code class="variable-op">,</code>
<code class="variable-quote">'</code><code class="variable-string">Group</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'scapi.Group'&gt;<code class="variable-op">,</code>
<code class="variable-quote">'</code><code class="variable-string">Playlist</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'scapi.Playlist'&gt;<code class="variable-op">,</code>
<code class="variable-quote">'</code><code class="variable-string">Track</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'scapi.Track'&gt;<code class="variable-op">,</code>
<code class="variable-quote">'</code><code class="variable-string">User</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;class 'scapi.User'&gt;<code class="variable-group">}</code>
</pre></td></tr></table>
</dd>
</dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,319 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.SCRedirectHandler</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Class&nbsp;SCRedirectHandler
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.SCRedirectHandler-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class SCRedirectHandler</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#SCRedirectHandler">source&nbsp;code</a></span></p>
<pre class="base-tree">
urllib2.BaseHandler --+
|
urllib2.HTTPRedirectHandler --+
|
<strong class="uidshort">SCRedirectHandler</strong>
</pre>
<hr />
<p>A urllib2-Handler to deal with the redirects the RESTful API of SC
uses.</p>
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.SCRedirectHandler-class.html#http_error_303" class="summary-sig-name">http_error_303</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">req</span>,
<span class="summary-sig-arg">fp</span>,
<span class="summary-sig-arg">code</span>,
<span class="summary-sig-arg">msg</span>,
<span class="summary-sig-arg">hdrs</span>)</span><br />
In case of return-code 303 (See-other), we have to store the location
we got because that will determine the actual type of resource
returned.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#SCRedirectHandler.http_error_303">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.SCRedirectHandler-class.html#http_error_201" class="summary-sig-name">http_error_201</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">req</span>,
<span class="summary-sig-arg">fp</span>,
<span class="summary-sig-arg">code</span>,
<span class="summary-sig-arg">msg</span>,
<span class="summary-sig-arg">hdrs</span>)</span><br />
We fake a 201 being a 303 so that our redirection-scheme takes place
for the 201 the API throws in case we created something.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#SCRedirectHandler.http_error_201">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>urllib2.HTTPRedirectHandler</code></b>:
<code>http_error_301</code>,
<code>http_error_302</code>,
<code>http_error_307</code>,
<code>redirect_request</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>urllib2.BaseHandler</code></b>:
<code>__lt__</code>,
<code>add_parent</code>,
<code>close</code>
</p>
</td>
</tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="alternate_method"></a><span class="summary-name">alternate_method</span> = <code title="None">None</code>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>urllib2.HTTPRedirectHandler</code></b>:
<code>inf_msg</code>,
<code>max_redirections</code>,
<code>max_repeats</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>urllib2.BaseHandler</code></b>:
<code>handler_order</code>
</p>
</td>
</tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Method Details</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-MethodDetails"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
</table>
<a name="http_error_303"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">http_error_303</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">req</span>,
<span class="sig-arg">fp</span>,
<span class="sig-arg">code</span>,
<span class="sig-arg">msg</span>,
<span class="sig-arg">hdrs</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#SCRedirectHandler.http_error_303">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>In case of return-code 303 (See-other), we have to store the location
we got because that will determine the actual type of resource
returned.</p>
<dl class="fields">
<dt>Overrides:
urllib2.HTTPRedirectHandler.http_error_302
</dt>
</dl>
</td></tr></table>
</div>
<a name="http_error_201"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">http_error_201</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">req</span>,
<span class="sig-arg">fp</span>,
<span class="sig-arg">code</span>,
<span class="sig-arg">msg</span>,
<span class="sig-arg">hdrs</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#SCRedirectHandler.http_error_201">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>We fake a 201 being a 303 so that our redirection-scheme takes place
for the 201 the API throws in case we created something. If the location
is not available though, that means that whatever we created has succeded
- without being a named resource. Assigning an asset to a track is an
example of such case.</p>
<dl class="fields">
</dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,682 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.Scope</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Class&nbsp;Scope
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.Scope-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Scope</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#Scope">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
<strong class="uidshort">Scope</strong>
</pre>
<hr />
<p>The basic means to query and create resources. The Scope uses the <a
href="scapi.ApiConnector-class.html" class="link"
onclick="show_private();">ApiConnector</a> to create the proper URIs for
querying or creating resources.</p>
<p>For accessing resources from the root level, you explcitly create a
Scope and pass it an <a href="scapi.ApiConnector-class.html" class="link"
onclick="show_private();">ApiConnector</a>-instance. Then you can query
it or create new resources like this:</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span>connector = scapi.ApiConnector(host=<span class="py-string">'host'</span>, user=<span class="py-string">'user'</span>, password=<span class="py-string">'password'</span>) <span class="py-comment"># initialize the API</span>
<span class="py-prompt">&gt;&gt;&gt; </span>scope = scapi.Scope(connector) <span class="py-comment"># get the root scope</span>
<span class="py-prompt">&gt;&gt;&gt; </span>users = list(scope.users())
<span class="py-output">[&lt;scapi.User object at 0x12345&gt;, ...]</span></pre>
<p>Please not that all resources that are lists are returned as
<b>generator</b>. So you need to either iterate over them, or call
list(resources) on them.</p>
<p>When accessing resources that belong to another resource, like
contacts of a user, you access the parent's resource scope implicitly
through the resource instance like this:</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span>user = scope.users().next()
<span class="py-prompt">&gt;&gt;&gt; </span>list(user.contacts())
<span class="py-output">[&lt;scapi.Contact object at 0x12345&gt;, ...]</span></pre>
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.Scope-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">connector</span>,
<span class="summary-sig-arg">scope</span>=<span class="summary-sig-default">None</span>,
<span class="summary-sig-arg">parent</span>=<span class="summary-sig-default">None</span>)</span><br />
Create the Scope.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#Scope.__init__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_get_connector"></a><span class="summary-sig-name">_get_connector</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#Scope._get_connector">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.Scope-class.html#oauth_sign_get_request" class="summary-sig-name">oauth_sign_get_request</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">url</span>)</span><br />
This method will take an arbitrary url, and rewrite it so that the
current authenticator's oauth-headers are appended as
query-parameters.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#Scope.oauth_sign_get_request">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">urllib2.Request</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.Scope-class.html#_create_request" class="summary-sig-name" onclick="show_private();">_create_request</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">url</span>,
<span class="summary-sig-arg">connector</span>,
<span class="summary-sig-arg">parameters</span>,
<span class="summary-sig-arg">queryparams</span>,
<span class="summary-sig-arg">alternate_http_method</span>=<span class="summary-sig-default">None</span>,
<span class="summary-sig-arg">use_multipart</span>=<span class="summary-sig-default">False</span>)</span><br />
This method returnes the urllib2.Request to perform the actual
HTTP-request.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#Scope._create_request">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">str</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.Scope-class.html#_create_query_string" class="summary-sig-name" onclick="show_private();">_create_query_string</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">queryparams</span>)</span><br />
Small helpermethod to create the querystring from a dict.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#Scope._create_query_string">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.Scope-class.html#_call" class="summary-sig-name" onclick="show_private();">_call</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">method</span>,
<span class="summary-sig-arg">*args</span>,
<span class="summary-sig-arg">**kwargs</span>)</span><br />
The workhorse.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#Scope._call">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.Scope-class.html#_map" class="summary-sig-name" onclick="show_private();">_map</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">res</span>,
<span class="summary-sig-arg">method</span>,
<span class="summary-sig-arg">continue_list_fetching</span>)</span><br />
This method will take the JSON-result of a HTTP-call and return our
domain-objects.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#Scope._map">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.Scope-class.html#__getattr__" class="summary-sig-name">__getattr__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">_name</span>)</span><br />
Retrieve an API-method or a scoped domain-class.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#Scope.__getattr__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.Scope-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br />
repr(x)</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#Scope.__repr__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.Scope-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
str(x)</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#Scope.__str__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__hash__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__setattr__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Method Details</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-MethodDetails"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
</table>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">connector</span>,
<span class="sig-arg">scope</span>=<span class="sig-default">None</span>,
<span class="sig-arg">parent</span>=<span class="sig-default">None</span>)</span>
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#Scope.__init__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>Create the Scope. It can have a resource as scope, and possibly a
parent-scope.</p>
<dl class="fields">
<dt>Parameters:</dt>
<dd><ul class="nomargin-top">
<li><strong class="pname"><code>connector</code></strong> (ApiConnector) - The connector to use.</li>
<li><strong class="pname"><code>scope</code></strong> (scapi.RESTBase) - the resource to make this scope belong to</li>
<li><strong class="pname"><code>parent</code></strong> (scapi.Scope) - the parent scope of this scope</li>
</ul></dd>
<dt>Overrides:
object.__init__
</dt>
</dl>
</td></tr></table>
</div>
<a name="oauth_sign_get_request"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">oauth_sign_get_request</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">url</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#Scope.oauth_sign_get_request">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>This method will take an arbitrary url, and rewrite it so that the
current authenticator's oauth-headers are appended as
query-parameters.</p>
<p>This is used in streaming and downloading, because those content isn't
served from the SoundCloud servers themselves.</p>
<p>A usage example would look like this:</p>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span>sca = scapi.Scope(connector)
<span class="py-prompt">&gt;&gt;&gt; </span>track = sca.tracks(params={
<span class="py-output"> &quot;filter&quot; : &quot;downloadable&quot;,</span>
<span class="py-output"> }).next()</span></pre>
<pre class="py-doctest">
<span class="py-prompt">&gt;&gt;&gt; </span>download_url = track.download_url
<span class="py-prompt">&gt;&gt;&gt; </span>signed_url = track.oauth_sign_get_request(download_url)
<span class="py-prompt">&gt;&gt;&gt; </span>data = urllib2.urlopen(signed_url).read()</pre>
<dl class="fields">
</dl>
</td></tr></table>
</div>
<a name="_create_request"></a>
<div class="private">
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">_create_request</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">url</span>,
<span class="sig-arg">connector</span>,
<span class="sig-arg">parameters</span>,
<span class="sig-arg">queryparams</span>,
<span class="sig-arg">alternate_http_method</span>=<span class="sig-default">None</span>,
<span class="sig-arg">use_multipart</span>=<span class="sig-default">False</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#Scope._create_request">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>This method returnes the urllib2.Request to perform the actual
HTTP-request.</p>
<p>We return a subclass that overload the get_method-method to return a
custom method like &quot;PUT&quot;. Additionally, the request is enhanced
with the current authenticators authorization scheme headers.</p>
<dl class="fields">
<dt>Parameters:</dt>
<dd><ul class="nomargin-top">
<li><strong class="pname"><code>url</code></strong> - the destination url</li>
<li><strong class="pname"><code>connector</code></strong> - our connector-instance</li>
<li><strong class="pname"><code>parameters</code></strong> (None|dict&lt;str, basestring|list&lt;basestring&gt;&gt;) - the POST-parameters to use.</li>
<li><strong class="pname"><code>queryparams</code></strong> (None|dict&lt;str, basestring|list&lt;basestring&gt;&gt;) - the queryparams to use</li>
<li><strong class="pname"><code>alternate_http_method</code></strong> (str) - an alternate HTTP-method to use</li>
</ul></dd>
<dt>Returns: urllib2.Request</dt>
<dd>the fully equipped request</dd>
</dl>
</td></tr></table>
</div>
<a name="_create_query_string"></a>
<div class="private">
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">_create_query_string</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">queryparams</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#Scope._create_query_string">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>Small helpermethod to create the querystring from a dict.</p>
<dl class="fields">
<dt>Parameters:</dt>
<dd><ul class="nomargin-top">
<li><strong class="pname"><code>queryparams</code></strong> (None|dict&lt;str, basestring|list&lt;basestring&gt;&gt;) - the queryparameters.</li>
</ul></dd>
<dt>Returns: str</dt>
<dd>either the empty string, or a &quot;?&quot; followed by the
parameters joined by &quot;&amp;&quot;</dd>
</dl>
</td></tr></table>
</div>
<a name="_call"></a>
<div class="private">
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">_call</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">method</span>,
<span class="sig-arg">*args</span>,
<span class="sig-arg">**kwargs</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#Scope._call">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>The workhorse. It's complicated, convoluted and beyond understanding
of a mortal being.</p>
<p>You have been warned.</p>
<dl class="fields">
</dl>
</td></tr></table>
</div>
<a name="_map"></a>
<div class="private">
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">_map</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">res</span>,
<span class="sig-arg">method</span>,
<span class="sig-arg">continue_list_fetching</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#Scope._map">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>This method will take the JSON-result of a HTTP-call and return our
domain-objects.</p>
<p>It's also deep magic, don't look.</p>
<dl class="fields">
</dl>
</td></tr></table>
</div>
<a name="__getattr__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__getattr__</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">_name</span>)</span>
<br /><em class="fname">(Qualification operator)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#Scope.__getattr__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>Retrieve an API-method or a scoped domain-class.</p>
<p>If the former, result is a callable that supports the following
invocations:</p>
<ul>
<li>
calling (...), with possible arguments (positional/keyword), return
the resulting resource or list of resources. When calling, you can
pass a keyword-argument <b>params</b>. This must be a dict or <a
href="scapi.util.MultiDict-class.html" class="link">MultiDict</a> and
will be used to add additional query-get-parameters.
</li>
<li>
invoking append(resource) on it will PUT the resource, making it part
of the current resource. Makes sense only if it's a collection of
course.
</li>
<li>
invoking remove(resource) on it will DELETE the resource from it's
container. Also only usable on collections.
<p>TODO: describe the latter</p>
</li>
</ul>
<dl class="fields">
</dl>
</td></tr></table>
</div>
<a name="__repr__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
<br /><em class="fname">(Representation operator)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#Scope.__repr__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>repr(x)</p>
<dl class="fields">
<dt>Overrides:
object.__repr__
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<a name="__str__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
<br /><em class="fname">(Informal representation operator)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#Scope.__str__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>str(x)</p>
<dl class="fields">
<dt>Overrides:
object.__str__
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,264 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.Track</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Class&nbsp;Track
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.Track-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Track</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#Track">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a> --+
|
<strong class="uidshort">Track</strong>
</pre>
<hr />
<p>A track domain object/resource.</p>
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#__eq__">__eq__</a></code>,
<code><a href="scapi.RESTBase-class.html#__getattr__">__getattr__</a></code>,
<code><a href="scapi.RESTBase-class.html#__hash__">__hash__</a></code>,
<code><a href="scapi.RESTBase-class.html#__init__">__init__</a></code>,
<code><a href="scapi.RESTBase-class.html#__ne__">__ne__</a></code>,
<code><a href="scapi.RESTBase-class.html#__repr__">__repr__</a></code>,
<code><a href="scapi.RESTBase-class.html#__setattr__">__setattr__</a></code>
</p>
<div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private):
<code><a href="scapi.RESTBase-class.html#_as_arguments" onclick="show_private();">_as_arguments</a></code>,
<code><a href="scapi.RESTBase-class.html#_convert_value" onclick="show_private();">_convert_value</a></code>,
<code><a href="scapi.RESTBase-class.html#_scope" onclick="show_private();">_scope</a></code>
</p></div>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__str__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== CLASS METHODS ==================== -->
<a name="section-ClassMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#create">create</a></code>,
<code><a href="scapi.RESTBase-class.html#get">get</a></code>,
<code><a href="scapi.RESTBase-class.html#new">new</a></code>
</p>
<div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private):
<code><a href="scapi.RESTBase-class.html#_singleton" onclick="show_private();">_singleton</a></code>
</p></div>
</td>
</tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="KIND"></a><span class="summary-name">KIND</span> = <code title="'tracks'"><code class="variable-quote">'</code><code class="variable-string">tracks</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="ALIASES"></a><span class="summary-name">ALIASES</span> = <code title="['favorites']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">favorites</code><code class="variable-quote">'</code><code class="variable-group">]</code></code>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES">ALL_DOMAIN_CLASSES</a></code>,
<code><a href="scapi.RESTBase-class.html#REGISTRY">REGISTRY</a></code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,337 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.UnknownContentType</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Class&nbsp;UnknownContentType
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.UnknownContentType-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class UnknownContentType</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#UnknownContentType">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
exceptions.BaseException --+
|
exceptions.Exception --+
|
<strong class="uidshort">UnknownContentType</strong>
</pre>
<hr />
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.UnknownContentType-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">msg</span>)</span><br />
x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#UnknownContentType.__init__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.UnknownContentType-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">self</span>)</span><br />
repr(x)</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#UnknownContentType.__repr__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.UnknownContentType-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
str(x)</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi-pysrc.html#UnknownContentType.__str__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
<code>__new__</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__getitem__</code>,
<code>__getslice__</code>,
<code>__reduce__</code>,
<code>__setattr__</code>,
<code>__setstate__</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__hash__</code>,
<code>__reduce_ex__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
<code>args</code>,
<code>message</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Method Details</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-MethodDetails"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
</table>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">msg</span>)</span>
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#UnknownContentType.__init__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>x.__init__(...) initializes x; see x.__class__.__doc__ for
signature</p>
<dl class="fields">
<dt>Overrides:
object.__init__
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<a name="__repr__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">self</span>)</span>
<br /><em class="fname">(Representation operator)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#UnknownContentType.__repr__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>repr(x)</p>
<dl class="fields">
<dt>Overrides:
object.__repr__
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<a name="__str__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
<br /><em class="fname">(Informal representation operator)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi-pysrc.html#UnknownContentType.__str__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>str(x)</p>
<dl class="fields">
<dt>Overrides:
object.__str__
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,264 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.User</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Class&nbsp;User
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.User-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class User</h1><p class="nomargin-top"><span class="codelink"><a href="scapi-pysrc.html#User">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
<a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a> --+
|
<strong class="uidshort">User</strong>
</pre>
<hr />
<p>A user domain object/resource.</p>
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#__eq__">__eq__</a></code>,
<code><a href="scapi.RESTBase-class.html#__getattr__">__getattr__</a></code>,
<code><a href="scapi.RESTBase-class.html#__hash__">__hash__</a></code>,
<code><a href="scapi.RESTBase-class.html#__init__">__init__</a></code>,
<code><a href="scapi.RESTBase-class.html#__ne__">__ne__</a></code>,
<code><a href="scapi.RESTBase-class.html#__repr__">__repr__</a></code>,
<code><a href="scapi.RESTBase-class.html#__setattr__">__setattr__</a></code>
</p>
<div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private):
<code><a href="scapi.RESTBase-class.html#_as_arguments" onclick="show_private();">_as_arguments</a></code>,
<code><a href="scapi.RESTBase-class.html#_convert_value" onclick="show_private();">_convert_value</a></code>,
<code><a href="scapi.RESTBase-class.html#_scope" onclick="show_private();">_scope</a></code>
</p></div>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__str__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== CLASS METHODS ==================== -->
<a name="section-ClassMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#create">create</a></code>,
<code><a href="scapi.RESTBase-class.html#get">get</a></code>,
<code><a href="scapi.RESTBase-class.html#new">new</a></code>
</p>
<div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b> (private):
<code><a href="scapi.RESTBase-class.html#_singleton" onclick="show_private();">_singleton</a></code>
</p></div>
</td>
</tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="KIND"></a><span class="summary-name">KIND</span> = <code title="'users'"><code class="variable-quote">'</code><code class="variable-string">users</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="ALIASES"></a><span class="summary-name">ALIASES</span> = <code title="['me', 'permissions', 'contacts', 'user']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">me</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">permissions</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">contacts</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">user</code><code class="variable-quote">'</code><code class="variable-group">]</code></code>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code><a href="scapi.RESTBase-class.html" onclick="show_private();">RESTBase</a></code></b>:
<code><a href="scapi.RESTBase-class.html#ALL_DOMAIN_CLASSES">ALL_DOMAIN_CLASSES</a></code>,
<code><a href="scapi.RESTBase-class.html#REGISTRY">REGISTRY</a></code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,228 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.authentication</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Module&nbsp;authentication
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.authentication-module.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== MODULE DESCRIPTION ==================== -->
<h1 class="epydoc">Module authentication</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.authentication-pysrc.html">source&nbsp;code</a></span></p>
<!-- ==================== CLASSES ==================== -->
<a name="section-Classes"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Classes</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Classes"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html" class="summary-name">OAuthSignatureMethod_HMAC_SHA1</a>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.authentication.OAuthAuthenticator-class.html" class="summary-name">OAuthAuthenticator</a>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.authentication.BasicAuthenticator-class.html" class="summary-name">BasicAuthenticator</a>
</td>
</tr>
</table>
<!-- ==================== VARIABLES ==================== -->
<a name="section-Variables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Variables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.authentication-module.html#USE_DOUBLE_ESCAPE_HACK" class="summary-name">USE_DOUBLE_ESCAPE_HACK</a> = <code title="True">True</code><br />
There seems to be an uncertainty on the way parameters are to be
escaped.
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(__name__)">logging.getLogger(__name__)</code>
</td>
</tr>
</table>
<!-- ==================== VARIABLES DETAILS ==================== -->
<a name="section-VariablesDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Variables Details</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-VariablesDetails"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
</table>
<a name="USE_DOUBLE_ESCAPE_HACK"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<h3 class="epydoc">USE_DOUBLE_ESCAPE_HACK</h3>
<p>There seems to be an uncertainty on the way parameters are to be
escaped. For now, this variable switches between two escaping
mechanisms.</p>
<p>If True, the passed parameters - GET or POST - are escaped
*twice*.</p>
<dl class="fields">
</dl>
<dl class="fields">
<dt>Value:</dt>
<dd><table><tr><td><pre class="variable">
True
</pre></td></tr></table>
</dd>
</dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,348 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.authentication</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Module&nbsp;authentication
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.authentication-pysrc.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<h1 class="epydoc">Source Code for <a href="scapi.authentication-module.html" onclick="show_private();">Module scapi.authentication</a></h1>
<pre class="py-src">
<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## SouncCloudAPI implements a Python wrapper around the SoundCloud RESTful</tt> </tt>
<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## API</tt> </tt>
<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt>
<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Copyright (C) 2008 Diez B. Roggisch</tt> </tt>
<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Contact mailto:deets@soundcloud.com</tt> </tt>
<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt>
<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## This library is free software; you can redistribute it and/or</tt> </tt>
<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## modify it under the terms of the GNU Lesser General Public</tt> </tt>
<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## License as published by the Free Software Foundation; either</tt> </tt>
<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## version 2.1 of the License, or (at your option) any later version.</tt> </tt>
<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt>
<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## This library is distributed in the hope that it will be useful,</tt> </tt>
<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</tt> </tt>
<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Lesser General Public License for more details.</tt> </tt>
<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt>
<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## You should have received a copy of the GNU Lesser General Public</tt> </tt>
<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## License along with this library; if not, write to the Free Software</tt> </tt>
<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</tt> </tt>
<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">base64</tt> </tt>
<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">time</tt><tt class="py-op">,</tt> <tt class="py-name">random</tt> </tt>
<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urlparse</tt> </tt>
<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">hmac</tt> </tt>
<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">hashlib</tt> </tt>
<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package scapi=scapi-module.html"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-0', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module scapi.util=scapi.util-module.html"><a title="scapi.util" class="py-name" href="#" onclick="return doclink('link-1', 'util', 'link-1');">util</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Function scapi.util.escape()=scapi.util-module.html#escape"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-2', 'escape', 'link-2');">escape</a></tt> </tt>
<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> </tt>
<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> </tt>
<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable scapi.authentication.USE_DOUBLE_ESCAPE_HACK=scapi.authentication-module.html#USE_DOUBLE_ESCAPE_HACK"><a title="scapi.authentication.USE_DOUBLE_ESCAPE_HACK" class="py-name" href="#" onclick="return doclink('link-3', 'USE_DOUBLE_ESCAPE_HACK', 'link-3');">USE_DOUBLE_ESCAPE_HACK</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-string">"""</tt> </tt>
<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-string">There seems to be an uncertainty on the way</tt> </tt>
<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-string">parameters are to be escaped. For now, this</tt> </tt>
<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-string">variable switches between two escaping mechanisms.</tt> </tt>
<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-string"></tt> </tt>
<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-string">If True, the passed parameters - GET or POST - are</tt> </tt>
<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-string">escaped *twice*.</tt> </tt>
<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-string">"""</tt> </tt>
<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> </tt>
<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable scapi.authentication.logger=scapi.authentication-module.html#logger,Variable scapi.logger=scapi-module.html#logger,Variable scapi.tests.scapi_tests.logger=scapi.tests.scapi_tests-module.html#logger,Variable scapi.tests.test_connect.logger=scapi.tests.test_connect-module.html#logger,Variable scapi.tests.test_oauth.logger=scapi.tests.test_oauth-module.html#logger"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-4', 'logger', 'link-4');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> </tt>
<a name="OAuthSignatureMethod_HMAC_SHA1"></a><div id="OAuthSignatureMethod_HMAC_SHA1-def"><a name="L42"></a><tt class="py-lineno"> 42</tt> <a class="py-toggle" href="#" id="OAuthSignatureMethod_HMAC_SHA1-toggle" onclick="return toggle('OAuthSignatureMethod_HMAC_SHA1');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html">OAuthSignatureMethod_HMAC_SHA1</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuthSignatureMethod_HMAC_SHA1-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="OAuthSignatureMethod_HMAC_SHA1-expanded"><a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> </tt>
<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt id="link-5" class="py-name" targets="Variable scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.FORBIDDEN=scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#FORBIDDEN"><a title="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.FORBIDDEN" class="py-name" href="#" onclick="return doclink('link-5', 'FORBIDDEN', 'link-5');">FORBIDDEN</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'realm'</tt><tt class="py-op">,</tt> <tt class="py-string">'oauth_signature'</tt><tt class="py-op">]</tt> </tt>
<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> </tt>
<a name="OAuthSignatureMethod_HMAC_SHA1.get_name"></a><div id="OAuthSignatureMethod_HMAC_SHA1.get_name-def"><a name="L46"></a><tt class="py-lineno"> 46</tt> <a class="py-toggle" href="#" id="OAuthSignatureMethod_HMAC_SHA1.get_name-toggle" onclick="return toggle('OAuthSignatureMethod_HMAC_SHA1.get_name');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_name">get_name</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuthSignatureMethod_HMAC_SHA1.get_name-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthSignatureMethod_HMAC_SHA1.get_name-expanded"><a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'HMAC-SHA1'</tt> </tt>
</div><a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> </tt>
<a name="OAuthSignatureMethod_HMAC_SHA1.build_signature"></a><div id="OAuthSignatureMethod_HMAC_SHA1.build_signature-def"><a name="L49"></a><tt class="py-lineno"> 49</tt> <a class="py-toggle" href="#" id="OAuthSignatureMethod_HMAC_SHA1.build_signature-toggle" onclick="return toggle('OAuthSignatureMethod_HMAC_SHA1.build_signature');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#build_signature">build_signature</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">parameters</tt><tt class="py-op">,</tt> <tt class="py-param">consumer_secret</tt><tt class="py-op">,</tt> <tt class="py-param">token_secret</tt><tt class="py-op">,</tt> <tt class="py-param">oauth_parameters</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuthSignatureMethod_HMAC_SHA1.build_signature-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthSignatureMethod_HMAC_SHA1.build_signature-expanded"><a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-6" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-6', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">level</tt> <tt class="py-op">==</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">DEBUG</tt><tt class="py-op">:</tt> </tt>
<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt id="link-7" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-7', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"request: %r"</tt><tt class="py-op">,</tt> <tt class="py-name">request</tt><tt class="py-op">)</tt> </tt>
<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt id="link-8" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-8', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"parameters: %r"</tt><tt class="py-op">,</tt> <tt class="py-name">parameters</tt><tt class="py-op">)</tt> </tt>
<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt id="link-9" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-9', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"consumer_secret: %r"</tt><tt class="py-op">,</tt> <tt class="py-name">consumer_secret</tt><tt class="py-op">)</tt> </tt>
<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt id="link-10" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-10', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"token_secret: %r"</tt><tt class="py-op">,</tt> <tt class="py-name">token_secret</tt><tt class="py-op">)</tt> </tt>
<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt id="link-11" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-11', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"oauth_parameters: %r"</tt><tt class="py-op">,</tt> <tt class="py-name">oauth_parameters</tt><tt class="py-op">)</tt> </tt>
<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> </tt>
<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> </tt>
<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-name">temp</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">oauth_parameters</tt><tt class="py-op">)</tt> </tt>
<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">p</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.FORBIDDEN" class="py-name" href="#" onclick="return doclink('link-12', 'FORBIDDEN', 'link-5');">FORBIDDEN</a></tt><tt class="py-op">:</tt> </tt>
<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">p</tt> <tt class="py-keyword">in</tt> <tt class="py-name">temp</tt><tt class="py-op">:</tt> </tt>
<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">temp</tt><tt class="py-op">[</tt><tt class="py-name">p</tt><tt class="py-op">]</tt> </tt>
<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">parameters</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">parameters</tt><tt class="py-op">)</tt> </tt>
<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-name">sig</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt id="link-13" class="py-name"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-13', 'escape', 'link-2');">escape</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method()=scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_http_method"><a title="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method" class="py-name" href="#" onclick="return doclink('link-14', 'get_normalized_http_method', 'link-14');">get_normalized_http_method</a></tt><tt class="py-op">(</tt><tt class="py-name">request</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt id="link-15" class="py-name"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-15', 'escape', 'link-2');">escape</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Method scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url()=scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_http_url"><a title="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url" class="py-name" href="#" onclick="return doclink('link-16', 'get_normalized_http_url', 'link-16');">get_normalized_http_url</a></tt><tt class="py-op">(</tt><tt class="py-name">request</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Method scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters()=scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_parameters"><a title="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters" class="py-name" href="#" onclick="return doclink('link-17', 'get_normalized_parameters', 'link-17');">get_normalized_parameters</a></tt><tt class="py-op">(</tt><tt class="py-name">temp</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># these are escaped in the method already</tt> </tt>
<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt>
<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> </tt>
<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s&amp;'</tt> <tt class="py-op">%</tt> <tt class="py-name">consumer_secret</tt> </tt>
<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">token_secret</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">+=</tt> <tt class="py-name">token_secret</tt> </tt>
<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-name">raw</tt> <tt class="py-op">=</tt> <tt class="py-string">'&amp;'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">sig</tt><tt class="py-op">)</tt> </tt>
<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt id="link-18" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-18', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"raw basestring: %s"</tt><tt class="py-op">,</tt> <tt class="py-name">raw</tt><tt class="py-op">)</tt> </tt>
<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt id="link-19" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-19', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"key: %s"</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-comment"># hmac object</tt> </tt>
<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">hashed</tt> <tt class="py-op">=</tt> <tt class="py-name">hmac</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Class Method scapi.RESTBase.new()=scapi.RESTBase-class.html#new"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-20', 'new', 'link-20');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">raw</tt><tt class="py-op">,</tt> <tt class="py-name">hashlib</tt><tt class="py-op">.</tt><tt class="py-name">sha1</tt><tt class="py-op">)</tt> </tt>
<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-comment"># calculate the digest base 64</tt> </tt>
<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">signature</tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-21', 'escape', 'link-2');">escape</a></tt><tt class="py-op">(</tt><tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">b64encode</tt><tt class="py-op">(</tt><tt class="py-name">hashed</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">signature</tt> </tt>
</div><a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> </tt>
<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> </tt>
<a name="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method"></a><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method-def"><a name="L84"></a><tt class="py-lineno"> 84</tt> <a class="py-toggle" href="#" id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method-toggle" onclick="return toggle('OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_http_method">get_normalized_http_method</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method-expanded"><a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">request</tt><tt class="py-op">.</tt><tt class="py-name">get_method</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt>
<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> </tt>
<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-comment"># parses the url and rebuilds it to be scheme://host/path</tt> </tt>
<a name="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url"></a><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url-def"><a name="L89"></a><tt class="py-lineno"> 89</tt> <a class="py-toggle" href="#" id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url-toggle" onclick="return toggle('OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url');">-</a><tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_http_url">get_normalized_http_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url-expanded"><a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">request</tt><tt class="py-op">.</tt><tt class="py-name">get_full_url</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">parts</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">url_string</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s://%s%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">parts</tt><tt class="py-op">.</tt><tt class="py-name">scheme</tt><tt class="py-op">,</tt> <tt class="py-name">parts</tt><tt class="py-op">.</tt><tt class="py-name">netloc</tt><tt class="py-op">,</tt> <tt class="py-name">parts</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">)</tt> </tt>
<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">url_string</tt> </tt>
</div><a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> </tt>
<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> </tt>
<a name="OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters"></a><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters-def"><a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters-toggle" onclick="return toggle('OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_normalized_parameters">get_normalized_parameters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters-expanded"><a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">params</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-comment"># exclude the signature if it exists</tt> </tt>
<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">del</tt> <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'oauth_signature'</tt><tt class="py-op">]</tt> </tt>
<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">key_values</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> </tt>
<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">values</tt> <tt class="py-keyword">in</tt> <tt class="py-name">params</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">values</tt><tt class="py-op">,</tt> <tt class="py-name">file</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt>
<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">values</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">,</tt> <tt class="py-name">float</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">values</tt><tt class="py-op">)</tt> </tt>
<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">values</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">values</tt><tt class="py-op">]</tt> </tt>
<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">values</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">values</tt><tt class="py-op">]</tt> </tt>
<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-22" class="py-name"><a title="scapi.authentication.USE_DOUBLE_ESCAPE_HACK" class="py-name" href="#" onclick="return doclink('link-22', 'USE_DOUBLE_ESCAPE_HACK', 'link-3');">USE_DOUBLE_ESCAPE_HACK</a></tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">"ouath"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-23" class="py-name"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-23', 'escape', 'link-2');">escape</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">values</tt><tt class="py-op">:</tt> </tt>
<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">v</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">"utf-8"</tt><tt class="py-op">)</tt> </tt>
<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">"utf-8"</tt><tt class="py-op">)</tt> </tt>
<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-24" class="py-name"><a title="scapi.authentication.USE_DOUBLE_ESCAPE_HACK" class="py-name" href="#" onclick="return doclink('link-24', 'USE_DOUBLE_ESCAPE_HACK', 'link-3');">USE_DOUBLE_ESCAPE_HACK</a></tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">"oauth"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-comment"># this is a dirty hack to make the</tt> </tt>
<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># thing work with the current server-side</tt> </tt>
<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># implementation. Or is it by spec? </tt> </tt>
<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-25', 'escape', 'link-2');">escape</a></tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt> </tt>
<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">key_values</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-26" class="py-name"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-26', 'escape', 'link-2');">escape</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s=%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-comment"># sort lexicographically, first after key, then after value</tt> </tt>
<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">key_values</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-comment"># combine key value pairs in string</tt> </tt>
<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt id="link-27" class="py-name"><a title="scapi.util.escape" class="py-name" href="#" onclick="return doclink('link-27', 'escape', 'link-2');">escape</a></tt><tt class="py-op">(</tt><tt class="py-string">'&amp;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">key_values</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> </tt>
<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> </tt>
<a name="OAuthAuthenticator"></a><div id="OAuthAuthenticator-def"><a name="L132"></a><tt class="py-lineno">132</tt> <a class="py-toggle" href="#" id="OAuthAuthenticator-toggle" onclick="return toggle('OAuthAuthenticator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.authentication.OAuthAuthenticator-class.html">OAuthAuthenticator</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuthAuthenticator-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="OAuthAuthenticator-expanded"><a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt id="link-28" class="py-name" targets="Variable scapi.authentication.OAuthAuthenticator.OAUTH_API_VERSION=scapi.authentication.OAuthAuthenticator-class.html#OAUTH_API_VERSION"><a title="scapi.authentication.OAuthAuthenticator.OAUTH_API_VERSION" class="py-name" href="#" onclick="return doclink('link-28', 'OAUTH_API_VERSION', 'link-28');">OAUTH_API_VERSION</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'1.0'</tt> </tt>
<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt id="link-29" class="py-name" targets="Variable scapi.authentication.OAuthAuthenticator.AUTHORIZATION_HEADER=scapi.authentication.OAuthAuthenticator-class.html#AUTHORIZATION_HEADER"><a title="scapi.authentication.OAuthAuthenticator.AUTHORIZATION_HEADER" class="py-name" href="#" onclick="return doclink('link-29', 'AUTHORIZATION_HEADER', 'link-29');">AUTHORIZATION_HEADER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Authorization"</tt> </tt>
<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> </tt>
<a name="OAuthAuthenticator.__init__"></a><div id="OAuthAuthenticator.__init__-def"><a name="L136"></a><tt class="py-lineno">136</tt> <a class="py-toggle" href="#" id="OAuthAuthenticator.__init__-toggle" onclick="return toggle('OAuthAuthenticator.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthAuthenticator-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">consumer</tt><tt class="py-op">,</tt> <tt class="py-param">consumer_secret</tt><tt class="py-op">,</tt> <tt class="py-param">token</tt><tt class="py-op">,</tt> <tt class="py-param">secret</tt><tt class="py-op">,</tt> <tt class="py-param">signature_method</tt><tt class="py-op">=</tt><tt id="link-30" class="py-name" targets="Class scapi.authentication.OAuthSignatureMethod_HMAC_SHA1=scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html"><a title="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1" class="py-name" href="#" onclick="return doclink('link-30', 'OAuthSignatureMethod_HMAC_SHA1', 'link-30');">OAuthSignatureMethod_HMAC_SHA1</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuthAuthenticator.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthAuthenticator.__init__-expanded"><a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_consumer</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_token</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_secret</tt> <tt class="py-op">=</tt> <tt class="py-name">consumer</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">secret</tt> </tt>
<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_consumer_secret</tt> <tt class="py-op">=</tt> <tt class="py-name">consumer_secret</tt> </tt>
<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_signature_method</tt> <tt class="py-op">=</tt> <tt class="py-name">signature_method</tt> </tt>
<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">random</tt><tt class="py-op">.</tt><tt class="py-name">seed</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> </tt>
<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> </tt>
<a name="OAuthAuthenticator.augment_request"></a><div id="OAuthAuthenticator.augment_request-def"><a name="L143"></a><tt class="py-lineno">143</tt> <a class="py-toggle" href="#" id="OAuthAuthenticator.augment_request-toggle" onclick="return toggle('OAuthAuthenticator.augment_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthAuthenticator-class.html#augment_request">augment_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">req</tt><tt class="py-op">,</tt> <tt class="py-param">parameters</tt><tt class="py-op">,</tt> <tt class="py-param">use_multipart</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">oauth_callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">oauth_verifier</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuthAuthenticator.augment_request-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthAuthenticator.augment_request-expanded"><a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">oauth_parameters</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-string">'oauth_consumer_key'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_consumer</tt><tt class="py-op">,</tt> </tt>
<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-string">'oauth_timestamp'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Method scapi.authentication.OAuthAuthenticator.generate_timestamp()=scapi.authentication.OAuthAuthenticator-class.html#generate_timestamp"><a title="scapi.authentication.OAuthAuthenticator.generate_timestamp" class="py-name" href="#" onclick="return doclink('link-31', 'generate_timestamp', 'link-31');">generate_timestamp</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-string">'oauth_nonce'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method scapi.authentication.OAuthAuthenticator.generate_nonce()=scapi.authentication.OAuthAuthenticator-class.html#generate_nonce"><a title="scapi.authentication.OAuthAuthenticator.generate_nonce" class="py-name" href="#" onclick="return doclink('link-32', 'generate_nonce', 'link-32');">generate_nonce</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-string">'oauth_version'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="scapi.authentication.OAuthAuthenticator.OAUTH_API_VERSION" class="py-name" href="#" onclick="return doclink('link-33', 'OAUTH_API_VERSION', 'link-28');">OAUTH_API_VERSION</a></tt><tt class="py-op">,</tt> </tt>
<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-string">'oauth_signature_method'</tt> <tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_signature_method</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_name()=scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#get_name"><a title="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.get_name" class="py-name" href="#" onclick="return doclink('link-34', 'get_name', 'link-34');">get_name</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-comment">#'realm' : "http://soundcloud.com",</tt> </tt>
<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_token</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-name">oauth_parameters</tt><tt class="py-op">[</tt><tt class="py-string">'oauth_token'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_token</tt> </tt>
<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> </tt>
<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">oauth_callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-name">oauth_parameters</tt><tt class="py-op">[</tt><tt class="py-string">'oauth_callback'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">oauth_callback</tt> </tt>
<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> </tt>
<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">oauth_verifier</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">oauth_parameters</tt><tt class="py-op">[</tt><tt class="py-string">'oauth_verifier'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">oauth_verifier</tt> </tt>
<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> </tt>
<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-comment"># in case we upload large files, we don't</tt> </tt>
<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># sign the request over the parameters</tt> </tt>
<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">use_multipart</tt><tt class="py-op">:</tt> </tt>
<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-name">parameters</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> </tt>
<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">oauth_parameters</tt><tt class="py-op">[</tt><tt class="py-string">'oauth_signature'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_signature_method</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.build_signature()=scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html#build_signature"><a title="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1.build_signature" class="py-name" href="#" onclick="return doclink('link-35', 'build_signature', 'link-35');">build_signature</a></tt><tt class="py-op">(</tt><tt class="py-name">req</tt><tt class="py-op">,</tt> </tt>
<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-name">parameters</tt><tt class="py-op">,</tt> </tt>
<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_consumer_secret</tt><tt class="py-op">,</tt> </tt>
<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_secret</tt><tt class="py-op">,</tt> </tt>
<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-name">oauth_parameters</tt><tt class="py-op">)</tt> </tt>
<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">to_header</tt><tt class="py-op">(</tt><tt class="py-param">d</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">","</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">'%s="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sorted</tt><tt class="py-op">(</tt><tt class="py-name">oauth_parameters</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> </tt>
<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-name">req</tt><tt class="py-op">.</tt><tt class="py-name">add_header</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="scapi.authentication.OAuthAuthenticator.AUTHORIZATION_HEADER" class="py-name" href="#" onclick="return doclink('link-36', 'AUTHORIZATION_HEADER', 'link-29');">AUTHORIZATION_HEADER</a></tt><tt class="py-op">,</tt> <tt class="py-string">"OAuth %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">to_header</tt><tt class="py-op">(</tt><tt class="py-name">oauth_parameters</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> </tt>
<a name="OAuthAuthenticator.generate_timestamp"></a><div id="OAuthAuthenticator.generate_timestamp-def"><a name="L176"></a><tt class="py-lineno">176</tt> <a class="py-toggle" href="#" id="OAuthAuthenticator.generate_timestamp-toggle" onclick="return toggle('OAuthAuthenticator.generate_timestamp');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthAuthenticator-class.html#generate_timestamp">generate_timestamp</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuthAuthenticator.generate_timestamp-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthAuthenticator.generate_timestamp-expanded"><a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-comment"># * 1000.0)</tt> </tt>
</div><a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> </tt>
<a name="OAuthAuthenticator.generate_nonce"></a><div id="OAuthAuthenticator.generate_nonce-def"><a name="L179"></a><tt class="py-lineno">179</tt> <a class="py-toggle" href="#" id="OAuthAuthenticator.generate_nonce-toggle" onclick="return toggle('OAuthAuthenticator.generate_nonce');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.OAuthAuthenticator-class.html#generate_nonce">generate_nonce</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">length</tt><tt class="py-op">=</tt><tt class="py-number">8</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuthAuthenticator.generate_nonce-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="OAuthAuthenticator.generate_nonce-expanded"><a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">random</tt><tt class="py-op">.</tt><tt class="py-name">randint</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">9</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">length</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> </tt>
<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> </tt>
<a name="BasicAuthenticator"></a><div id="BasicAuthenticator-def"><a name="L183"></a><tt class="py-lineno">183</tt> <a class="py-toggle" href="#" id="BasicAuthenticator-toggle" onclick="return toggle('BasicAuthenticator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.authentication.BasicAuthenticator-class.html">BasicAuthenticator</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="BasicAuthenticator-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="BasicAuthenticator-expanded"><a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> </tt>
<a name="BasicAuthenticator.__init__"></a><div id="BasicAuthenticator.__init__-def"><a name="L185"></a><tt class="py-lineno">185</tt> <a class="py-toggle" href="#" id="BasicAuthenticator.__init__-toggle" onclick="return toggle('BasicAuthenticator.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.BasicAuthenticator-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">user</tt><tt class="py-op">,</tt> <tt class="py-param">password</tt><tt class="py-op">,</tt> <tt class="py-param">consumer</tt><tt class="py-op">,</tt> <tt class="py-param">consumer_secret</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="BasicAuthenticator.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BasicAuthenticator.__init__-expanded"><a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base64string</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">encodestring</tt><tt class="py-op">(</tt><tt class="py-string">"%s:%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_x_auth_header</tt> <tt class="py-op">=</tt> <tt class="py-string">'OAuth oauth_consumer_key="%s" oauth_consumer_secret="%s"'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">consumer</tt><tt class="py-op">,</tt> <tt class="py-name">consumer_secret</tt><tt class="py-op">)</tt> </tt>
</div><a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> </tt>
<a name="BasicAuthenticator.augment_request"></a><div id="BasicAuthenticator.augment_request-def"><a name="L189"></a><tt class="py-lineno">189</tt> <a class="py-toggle" href="#" id="BasicAuthenticator.augment_request-toggle" onclick="return toggle('BasicAuthenticator.augment_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.authentication.BasicAuthenticator-class.html#augment_request">augment_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">req</tt><tt class="py-op">,</tt> <tt class="py-param">parameters</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="BasicAuthenticator.augment_request-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BasicAuthenticator.augment_request-expanded"><a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">req</tt><tt class="py-op">.</tt><tt class="py-name">add_header</tt><tt class="py-op">(</tt><tt class="py-string">"Authorization"</tt><tt class="py-op">,</tt> <tt class="py-string">"Basic %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base64string</tt><tt class="py-op">)</tt> </tt>
<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-name">req</tt><tt class="py-op">.</tt><tt class="py-name">add_header</tt><tt class="py-op">(</tt><tt class="py-string">"X-Authorization"</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_x_auth_header</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
</script>
</pre>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,267 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.authentication.BasicAuthenticator</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
<a href="scapi.authentication-module.html" onclick="show_private();">Module&nbsp;authentication</a> ::
Class&nbsp;BasicAuthenticator
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.authentication.BasicAuthenticator-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class BasicAuthenticator</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.authentication-pysrc.html#BasicAuthenticator">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
<strong class="uidshort">BasicAuthenticator</strong>
</pre>
<hr />
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.authentication.BasicAuthenticator-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">user</span>,
<span class="summary-sig-arg">password</span>,
<span class="summary-sig-arg">consumer</span>,
<span class="summary-sig-arg">consumer_secret</span>)</span><br />
x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.authentication-pysrc.html#BasicAuthenticator.__init__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="augment_request"></a><span class="summary-sig-name">augment_request</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">req</span>,
<span class="summary-sig-arg">parameters</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.authentication-pysrc.html#BasicAuthenticator.augment_request">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__hash__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__repr__</code>,
<code>__setattr__</code>,
<code>__str__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Method Details</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-MethodDetails"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
</table>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">user</span>,
<span class="sig-arg">password</span>,
<span class="sig-arg">consumer</span>,
<span class="sig-arg">consumer_secret</span>)</span>
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi.authentication-pysrc.html#BasicAuthenticator.__init__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>x.__init__(...) initializes x; see x.__class__.__doc__ for
signature</p>
<dl class="fields">
<dt>Overrides:
object.__init__
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,337 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.authentication.OAuthAuthenticator</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
<a href="scapi.authentication-module.html" onclick="show_private();">Module&nbsp;authentication</a> ::
Class&nbsp;OAuthAuthenticator
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.authentication.OAuthAuthenticator-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class OAuthAuthenticator</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthAuthenticator">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
<strong class="uidshort">OAuthAuthenticator</strong>
</pre>
<hr />
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.authentication.OAuthAuthenticator-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">consumer</span>,
<span class="summary-sig-arg">consumer_secret</span>,
<span class="summary-sig-arg">token</span>,
<span class="summary-sig-arg">secret</span>,
<span class="summary-sig-arg">signature_method</span>=<span class="summary-sig-default">OAuthSignatureMethod_HMAC_SHA1()</span>)</span><br />
x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthAuthenticator.__init__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="augment_request"></a><span class="summary-sig-name">augment_request</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">req</span>,
<span class="summary-sig-arg">parameters</span>,
<span class="summary-sig-arg">use_multipart</span>=<span class="summary-sig-default">False</span>,
<span class="summary-sig-arg">oauth_callback</span>=<span class="summary-sig-default">None</span>,
<span class="summary-sig-arg">oauth_verifier</span>=<span class="summary-sig-default">None</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthAuthenticator.augment_request">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="generate_timestamp"></a><span class="summary-sig-name">generate_timestamp</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthAuthenticator.generate_timestamp">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="generate_nonce"></a><span class="summary-sig-name">generate_nonce</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">length</span>=<span class="summary-sig-default">8</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthAuthenticator.generate_nonce">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__hash__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__repr__</code>,
<code>__setattr__</code>,
<code>__str__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="OAUTH_API_VERSION"></a><span class="summary-name">OAUTH_API_VERSION</span> = <code title="'1.0'"><code class="variable-quote">'</code><code class="variable-string">1.0</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="AUTHORIZATION_HEADER"></a><span class="summary-name">AUTHORIZATION_HEADER</span> = <code title="'Authorization'"><code class="variable-quote">'</code><code class="variable-string">Authorization</code><code class="variable-quote">'</code></code>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Method Details</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-MethodDetails"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
</table>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">consumer</span>,
<span class="sig-arg">consumer_secret</span>,
<span class="sig-arg">token</span>,
<span class="sig-arg">secret</span>,
<span class="sig-arg">signature_method</span>=<span class="sig-default">OAuthSignatureMethod_HMAC_SHA1()</span>)</span>
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthAuthenticator.__init__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>x.__init__(...) initializes x; see x.__class__.__doc__ for
signature</p>
<dl class="fields">
<dt>Overrides:
object.__init__
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,294 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.authentication.OAuthSignatureMethod_HMAC_SHA1</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
<a href="scapi.authentication-module.html" onclick="show_private();">Module&nbsp;authentication</a> ::
Class&nbsp;OAuthSignatureMethod_HMAC_SHA1
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class OAuthSignatureMethod_HMAC_SHA1</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthSignatureMethod_HMAC_SHA1">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
<strong class="uidshort">OAuthSignatureMethod_HMAC_SHA1</strong>
</pre>
<hr />
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="get_name"></a><span class="summary-sig-name">get_name</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthSignatureMethod_HMAC_SHA1.get_name">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="build_signature"></a><span class="summary-sig-name">build_signature</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">request</span>,
<span class="summary-sig-arg">parameters</span>,
<span class="summary-sig-arg">consumer_secret</span>,
<span class="summary-sig-arg">token_secret</span>,
<span class="summary-sig-arg">oauth_parameters</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthSignatureMethod_HMAC_SHA1.build_signature">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="get_normalized_http_method"></a><span class="summary-sig-name">get_normalized_http_method</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">request</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_method">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="get_normalized_http_url"></a><span class="summary-sig-name">get_normalized_http_url</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">request</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthSignatureMethod_HMAC_SHA1.get_normalized_http_url">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="get_normalized_parameters"></a><span class="summary-sig-name">get_normalized_parameters</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">params</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.authentication-pysrc.html#OAuthSignatureMethod_HMAC_SHA1.get_normalized_parameters">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__hash__</code>,
<code>__init__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__repr__</code>,
<code>__setattr__</code>,
<code>__str__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="FORBIDDEN"></a><span class="summary-name">FORBIDDEN</span> = <code title="['realm', 'oauth_signature']"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">realm</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">oauth_signature</code><code class="variable-quote">'</code><code class="variable-group">]</code></code>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,114 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.config</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Module&nbsp;config
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.config-module.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== MODULE DESCRIPTION ==================== -->
<h1 class="epydoc">Module config</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.config-pysrc.html">source&nbsp;code</a></span></p>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.config</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Module&nbsp;config
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.config-pysrc.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<h1 class="epydoc">Source Code for <a href="scapi.config-module.html">Module scapi.config</a></h1>
<pre class="py-src">
<a name="L1"></a><tt class="py-lineno">1</tt> <tt class="py-line"> </tt>
<a name="L2"></a><tt class="py-lineno">2</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
</script>
</pre>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,218 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.json</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Module&nbsp;json
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.json-module.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== MODULE DESCRIPTION ==================== -->
<h1 class="epydoc">Module json</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.json-pysrc.html">source&nbsp;code</a></span></p>
<!-- ==================== CLASSES ==================== -->
<a name="section-Classes"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Classes</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Classes"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.json._StringGenerator-class.html" class="summary-name" onclick="show_private();">_StringGenerator</a>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.json.WriteException-class.html" class="summary-name">WriteException</a>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.json.ReadException-class.html" class="summary-name">ReadException</a>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.json.JsonReader-class.html" class="summary-name">JsonReader</a>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.json.JsonWriter-class.html" class="summary-name">JsonWriter</a>
</td>
</tr>
</table>
<!-- ==================== FUNCTIONS ==================== -->
<a name="section-Functions"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Functions</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Functions"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="write"></a><span class="summary-sig-name">write</span>(<span class="summary-sig-arg">obj</span>,
<span class="summary-sig-arg">escaped_forward_slash</span>=<span class="summary-sig-default">False</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#write">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="read"></a><span class="summary-sig-name">read</span>(<span class="summary-sig-arg">s</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#read">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,433 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.json</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Module&nbsp;json
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.json-pysrc.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<h1 class="epydoc">Source Code for <a href="scapi.json-module.html">Module scapi.json</a></h1>
<pre class="py-src">
<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">string</tt> </tt>
<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">types</tt> </tt>
<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"> </tt>
<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">## json.py implements a JSON (http://json.org) reader and writer.</tt> </tt>
<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Copyright (C) 2005 Patrick D. Logan</tt> </tt>
<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Contact mailto:patrickdlogan@stardecisions.com</tt> </tt>
<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt>
<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## This library is free software; you can redistribute it and/or</tt> </tt>
<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## modify it under the terms of the GNU Lesser General Public</tt> </tt>
<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## License as published by the Free Software Foundation; either</tt> </tt>
<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## version 2.1 of the License, or (at your option) any later version.</tt> </tt>
<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt>
<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## This library is distributed in the hope that it will be useful,</tt> </tt>
<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</tt> </tt>
<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Lesser General Public License for more details.</tt> </tt>
<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt>
<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## You should have received a copy of the GNU Lesser General Public</tt> </tt>
<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## License along with this library; if not, write to the Free Software</tt> </tt>
<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</tt> </tt>
<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"> </tt>
<a name="_StringGenerator"></a><div id="_StringGenerator-def"><a name="L23"></a><tt class="py-lineno"> 23</tt> <a class="py-toggle" href="#" id="_StringGenerator-toggle" onclick="return toggle('_StringGenerator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.json._StringGenerator-class.html">_StringGenerator</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="_StringGenerator-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_StringGenerator-expanded"><a name="_StringGenerator.__init__"></a><div id="_StringGenerator.__init__-def"><a name="L24"></a><tt class="py-lineno"> 24</tt> <a class="py-toggle" href="#" id="_StringGenerator.__init__-toggle" onclick="return toggle('_StringGenerator.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json._StringGenerator-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="_StringGenerator.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="_StringGenerator.__init__-expanded"><a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">string</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt> </tt>
<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">index</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
</div><a name="_StringGenerator.peek"></a><div id="_StringGenerator.peek-def"><a name="L27"></a><tt class="py-lineno"> 27</tt> <a class="py-toggle" href="#" id="_StringGenerator.peek-toggle" onclick="return toggle('_StringGenerator.peek');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json._StringGenerator-class.html#peek">peek</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="_StringGenerator.peek-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="_StringGenerator.peek-expanded"><a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">index</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">i</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">string</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
</div><a name="_StringGenerator.next"></a><div id="_StringGenerator.next-def"><a name="L33"></a><tt class="py-lineno"> 33</tt> <a class="py-toggle" href="#" id="_StringGenerator.next-toggle" onclick="return toggle('_StringGenerator.next');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json._StringGenerator-class.html#next">next</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="_StringGenerator.next-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="_StringGenerator.next-expanded"><a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">index</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">index</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">string</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">index</tt><tt class="py-op">]</tt> </tt>
<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">StopIteration</tt> </tt>
</div><a name="_StringGenerator.all"></a><div id="_StringGenerator.all-def"><a name="L39"></a><tt class="py-lineno"> 39</tt> <a class="py-toggle" href="#" id="_StringGenerator.all-toggle" onclick="return toggle('_StringGenerator.all');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json._StringGenerator-class.html#all">all</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="_StringGenerator.all-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="_StringGenerator.all-expanded"><a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">string</tt> </tt>
</div></div><a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> </tt>
<a name="WriteException"></a><div id="WriteException-def"><a name="L42"></a><tt class="py-lineno"> 42</tt> <a class="py-toggle" href="#" id="WriteException-toggle" onclick="return toggle('WriteException');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.json.WriteException-class.html">WriteException</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="WriteException-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="WriteException-expanded"><a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
</div><a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> </tt>
<a name="ReadException"></a><div id="ReadException-def"><a name="L45"></a><tt class="py-lineno"> 45</tt> <a class="py-toggle" href="#" id="ReadException-toggle" onclick="return toggle('ReadException');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.json.ReadException-class.html">ReadException</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="ReadException-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ReadException-expanded"><a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
</div><a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> </tt>
<a name="JsonReader"></a><div id="JsonReader-def"><a name="L48"></a><tt class="py-lineno"> 48</tt> <a class="py-toggle" href="#" id="JsonReader-toggle" onclick="return toggle('JsonReader');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html">JsonReader</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="JsonReader-expanded"><a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt id="link-0" class="py-name" targets="Variable scapi.json.JsonReader.hex_digits=scapi.json.JsonReader-class.html#hex_digits"><a title="scapi.json.JsonReader.hex_digits" class="py-name" href="#" onclick="return doclink('link-0', 'hex_digits', 'link-0');">hex_digits</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'A'</tt><tt class="py-op">:</tt> <tt class="py-number">10</tt><tt class="py-op">,</tt><tt class="py-string">'B'</tt><tt class="py-op">:</tt> <tt class="py-number">11</tt><tt class="py-op">,</tt><tt class="py-string">'C'</tt><tt class="py-op">:</tt> <tt class="py-number">12</tt><tt class="py-op">,</tt><tt class="py-string">'D'</tt><tt class="py-op">:</tt> <tt class="py-number">13</tt><tt class="py-op">,</tt><tt class="py-string">'E'</tt><tt class="py-op">:</tt> <tt class="py-number">14</tt><tt class="py-op">,</tt><tt class="py-string">'F'</tt><tt class="py-op">:</tt><tt class="py-number">15</tt><tt class="py-op">}</tt> </tt>
<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt id="link-1" class="py-name" targets="Variable scapi.json.JsonReader.escapes=scapi.json.JsonReader-class.html#escapes"><a title="scapi.json.JsonReader.escapes" class="py-name" href="#" onclick="return doclink('link-1', 'escapes', 'link-1');">escapes</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'t'</tt><tt class="py-op">:</tt><tt class="py-string">'\t'</tt><tt class="py-op">,</tt><tt class="py-string">'n'</tt><tt class="py-op">:</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt><tt class="py-string">'f'</tt><tt class="py-op">:</tt><tt class="py-string">'\f'</tt><tt class="py-op">,</tt><tt class="py-string">'r'</tt><tt class="py-op">:</tt><tt class="py-string">'\r'</tt><tt class="py-op">,</tt><tt class="py-string">'b'</tt><tt class="py-op">:</tt><tt class="py-string">'\b'</tt><tt class="py-op">}</tt> </tt>
<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt>
<a name="JsonReader.read"></a><div id="JsonReader.read-def"><a name="L52"></a><tt class="py-lineno"> 52</tt> <a class="py-toggle" href="#" id="JsonReader.read-toggle" onclick="return toggle('JsonReader.read');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#read">read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader.read-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader.read-expanded"><a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name" targets="Class scapi.json._StringGenerator=scapi.json._StringGenerator-class.html"><a title="scapi.json._StringGenerator" class="py-name" href="#" onclick="return doclink('link-2', '_StringGenerator', 'link-2');">_StringGenerator</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Method scapi.json.JsonReader._read()=scapi.json.JsonReader-class.html#_read"><a title="scapi.json.JsonReader._read" class="py-name" href="#" onclick="return doclink('link-3', '_read', 'link-3');">_read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
</div><a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> </tt>
<a name="JsonReader._read"></a><div id="JsonReader._read-def"><a name="L57"></a><tt class="py-lineno"> 57</tt> <a class="py-toggle" href="#" id="JsonReader._read-toggle" onclick="return toggle('JsonReader._read');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_read">_read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader._read-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._read-expanded"><a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Method scapi.json.JsonReader._eatWhitespace()=scapi.json.JsonReader-class.html#_eatWhitespace"><a title="scapi.json.JsonReader._eatWhitespace" class="py-name" href="#" onclick="return doclink('link-4', '_eatWhitespace', 'link-4');">_eatWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt id="link-5" class="py-name" targets="Method scapi.json._StringGenerator.peek()=scapi.json._StringGenerator-class.html#peek"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-5', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Method scapi.json.JsonReader._peek()=scapi.json.JsonReader-class.html#_peek"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-6', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-7" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-7', 'peek', 'link-5');">peek</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-8" class="py-name" targets="Class scapi.json.ReadException=scapi.json.ReadException-class.html"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-8', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Nothing to read: '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Method scapi.json._StringGenerator.all()=scapi.json._StringGenerator-class.html#all"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-9', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-10" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-10', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'{'</tt><tt class="py-op">:</tt> </tt>
<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Method scapi.json.JsonReader._readObject()=scapi.json.JsonReader-class.html#_readObject"><a title="scapi.json.JsonReader._readObject" class="py-name" href="#" onclick="return doclink('link-11', '_readObject', 'link-11');">_readObject</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-12" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-12', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'['</tt><tt class="py-op">:</tt> </tt>
<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method scapi.json.JsonReader._readArray()=scapi.json.JsonReader-class.html#_readArray"><a title="scapi.json.JsonReader._readArray" class="py-name" href="#" onclick="return doclink('link-13', '_readArray', 'link-13');">_readArray</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-14" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-14', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'"'</tt><tt class="py-op">:</tt> </tt>
<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method scapi.json.JsonReader._readString()=scapi.json.JsonReader-class.html#_readString"><a title="scapi.json.JsonReader._readString" class="py-name" href="#" onclick="return doclink('link-15', '_readString', 'link-15');">_readString</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-16" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-16', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'-'</tt> <tt class="py-keyword">or</tt> <tt id="link-17" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-17', 'peek', 'link-5');">peek</a></tt><tt class="py-op">.</tt><tt class="py-name">isdigit</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method scapi.json.JsonReader._readNumber()=scapi.json.JsonReader-class.html#_readNumber"><a title="scapi.json.JsonReader._readNumber" class="py-name" href="#" onclick="return doclink('link-18', '_readNumber', 'link-18');">_readNumber</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-19" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-19', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'t'</tt><tt class="py-op">:</tt> </tt>
<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Method scapi.json.JsonReader._readTrue()=scapi.json.JsonReader-class.html#_readTrue"><a title="scapi.json.JsonReader._readTrue" class="py-name" href="#" onclick="return doclink('link-20', '_readTrue', 'link-20');">_readTrue</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-21" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-21', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'f'</tt><tt class="py-op">:</tt> </tt>
<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method scapi.json.JsonReader._readFalse()=scapi.json.JsonReader-class.html#_readFalse"><a title="scapi.json.JsonReader._readFalse" class="py-name" href="#" onclick="return doclink('link-22', '_readFalse', 'link-22');">_readFalse</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-23" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-23', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'n'</tt><tt class="py-op">:</tt> </tt>
<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Method scapi.json.JsonReader._readNull()=scapi.json.JsonReader-class.html#_readNull"><a title="scapi.json.JsonReader._readNull" class="py-name" href="#" onclick="return doclink('link-24', '_readNull', 'link-24');">_readNull</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-25" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-25', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'/'</tt><tt class="py-op">:</tt> </tt>
<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method scapi.json.JsonReader._readComment()=scapi.json.JsonReader-class.html#_readComment"><a title="scapi.json.JsonReader._readComment" class="py-name" href="#" onclick="return doclink('link-26', '_readComment', 'link-26');">_readComment</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="scapi.json.JsonReader._read" class="py-name" href="#" onclick="return doclink('link-27', '_read', 'link-3');">_read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-28" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-28', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Input is not valid JSON: '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-29', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> </tt>
<a name="JsonReader._readTrue"></a><div id="JsonReader._readTrue-def"><a name="L82"></a><tt class="py-lineno"> 82</tt> <a class="py-toggle" href="#" id="JsonReader._readTrue-toggle" onclick="return toggle('JsonReader._readTrue');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readTrue">_readTrue</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader._readTrue-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readTrue-expanded"><a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method scapi.json.JsonReader._assertNext()=scapi.json.JsonReader-class.html#_assertNext"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-30', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'t'</tt><tt class="py-op">,</tt> <tt class="py-string">"true"</tt><tt class="py-op">)</tt> </tt>
<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-31', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'r'</tt><tt class="py-op">,</tt> <tt class="py-string">"true"</tt><tt class="py-op">)</tt> </tt>
<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-32', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'u'</tt><tt class="py-op">,</tt> <tt class="py-string">"true"</tt><tt class="py-op">)</tt> </tt>
<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-33', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">,</tt> <tt class="py-string">"true"</tt><tt class="py-op">)</tt> </tt>
<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
</div><a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> </tt>
<a name="JsonReader._readFalse"></a><div id="JsonReader._readFalse-def"><a name="L89"></a><tt class="py-lineno"> 89</tt> <a class="py-toggle" href="#" id="JsonReader._readFalse-toggle" onclick="return toggle('JsonReader._readFalse');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readFalse">_readFalse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader._readFalse-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readFalse-expanded"><a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-34', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'f'</tt><tt class="py-op">,</tt> <tt class="py-string">"false"</tt><tt class="py-op">)</tt> </tt>
<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-35', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">,</tt> <tt class="py-string">"false"</tt><tt class="py-op">)</tt> </tt>
<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-36', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'l'</tt><tt class="py-op">,</tt> <tt class="py-string">"false"</tt><tt class="py-op">)</tt> </tt>
<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-37', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'s'</tt><tt class="py-op">,</tt> <tt class="py-string">"false"</tt><tt class="py-op">)</tt> </tt>
<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-38', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">,</tt> <tt class="py-string">"false"</tt><tt class="py-op">)</tt> </tt>
<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
</div><a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> </tt>
<a name="JsonReader._readNull"></a><div id="JsonReader._readNull-def"><a name="L97"></a><tt class="py-lineno"> 97</tt> <a class="py-toggle" href="#" id="JsonReader._readNull-toggle" onclick="return toggle('JsonReader._readNull');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readNull">_readNull</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader._readNull-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readNull-expanded"><a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-39', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'n'</tt><tt class="py-op">,</tt> <tt class="py-string">"null"</tt><tt class="py-op">)</tt> </tt>
<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-40', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'u'</tt><tt class="py-op">,</tt> <tt class="py-string">"null"</tt><tt class="py-op">)</tt> </tt>
<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-41', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'l'</tt><tt class="py-op">,</tt> <tt class="py-string">"null"</tt><tt class="py-op">)</tt> </tt>
<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="scapi.json.JsonReader._assertNext" class="py-name" href="#" onclick="return doclink('link-42', '_assertNext', 'link-30');">_assertNext</a></tt><tt class="py-op">(</tt><tt class="py-string">'l'</tt><tt class="py-op">,</tt> <tt class="py-string">"null"</tt><tt class="py-op">)</tt> </tt>
<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
</div><a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> </tt>
<a name="JsonReader._assertNext"></a><div id="JsonReader._assertNext-def"><a name="L104"></a><tt class="py-lineno">104</tt> <a class="py-toggle" href="#" id="JsonReader._assertNext-toggle" onclick="return toggle('JsonReader._assertNext');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_assertNext">_assertNext</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ch</tt><tt class="py-op">,</tt> <tt class="py-param">target</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader._assertNext-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._assertNext-expanded"><a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method scapi.json.JsonReader._next()=scapi.json.JsonReader-class.html#_next"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-43', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">ch</tt><tt class="py-op">:</tt> </tt>
<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-44" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-44', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Trying to read %s: '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-45', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> </tt>
<a name="JsonReader._readNumber"></a><div id="JsonReader._readNumber-def"><a name="L108"></a><tt class="py-lineno">108</tt> <a class="py-toggle" href="#" id="JsonReader._readNumber-toggle" onclick="return toggle('JsonReader._readNumber');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readNumber">_readNumber</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader._readNumber-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readNumber-expanded"><a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-name">isfloat</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-46', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt id="link-47" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-47', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-48', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt id="link-49" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-49', 'peek', 'link-5');">peek</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt id="link-50" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-50', 'peek', 'link-5');">peek</a></tt><tt class="py-op">.</tt><tt class="py-name">isdigit</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt id="link-51" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-51', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"."</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">isfloat</tt> <tt class="py-op">=</tt> <tt class="py-name">isfloat</tt> <tt class="py-keyword">or</tt> <tt id="link-52" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-52', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"."</tt> </tt>
<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-53', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt id="link-54" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-54', 'peek', 'link-5');">peek</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-55', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isfloat</tt><tt class="py-op">:</tt> </tt>
<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-56" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-56', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON number: '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-name">result</tt> </tt>
</div><a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> </tt>
<a name="JsonReader._readString"></a><div id="JsonReader._readString-def"><a name="L124"></a><tt class="py-lineno">124</tt> <a class="py-toggle" href="#" id="JsonReader._readString-toggle" onclick="return toggle('JsonReader._readString');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readString">_readString</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader._readString-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readString-expanded"><a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-57', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'"'</tt> </tt>
<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-58', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'"'</tt><tt class="py-op">:</tt> </tt>
<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-59', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ch</tt> <tt class="py-op">==</tt> <tt class="py-string">"\\"</tt><tt class="py-op">:</tt> </tt>
<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-60', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ch</tt> <tt class="py-keyword">in</tt> <tt class="py-string">'brnft'</tt><tt class="py-op">:</tt> </tt>
<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="scapi.json.JsonReader.escapes" class="py-name" href="#" onclick="return doclink('link-61', 'escapes', 'link-1');">escapes</a></tt><tt class="py-op">[</tt><tt class="py-name">ch</tt><tt class="py-op">]</tt> </tt>
<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ch</tt> <tt class="py-op">==</tt> <tt class="py-string">"u"</tt><tt class="py-op">:</tt> </tt>
<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">ch4096</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-62', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">ch256</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-63', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">ch16</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-64', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">ch1</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-65', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-number">4096</tt> <tt class="py-op">*</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Method scapi.json.JsonReader._hexDigitToInt()=scapi.json.JsonReader-class.html#_hexDigitToInt"><a title="scapi.json.JsonReader._hexDigitToInt" class="py-name" href="#" onclick="return doclink('link-66', '_hexDigitToInt', 'link-66');">_hexDigitToInt</a></tt><tt class="py-op">(</tt><tt class="py-name">ch4096</tt><tt class="py-op">)</tt> </tt>
<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">+=</tt> <tt class="py-number">256</tt> <tt class="py-op">*</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="scapi.json.JsonReader._hexDigitToInt" class="py-name" href="#" onclick="return doclink('link-67', '_hexDigitToInt', 'link-66');">_hexDigitToInt</a></tt><tt class="py-op">(</tt><tt class="py-name">ch256</tt><tt class="py-op">)</tt> </tt>
<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">+=</tt> <tt class="py-number">16</tt> <tt class="py-op">*</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="scapi.json.JsonReader._hexDigitToInt" class="py-name" href="#" onclick="return doclink('link-68', '_hexDigitToInt', 'link-66');">_hexDigitToInt</a></tt><tt class="py-op">(</tt><tt class="py-name">ch16</tt><tt class="py-op">)</tt> </tt>
<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">+=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="scapi.json.JsonReader._hexDigitToInt" class="py-name" href="#" onclick="return doclink('link-69', '_hexDigitToInt', 'link-66');">_hexDigitToInt</a></tt><tt class="py-op">(</tt><tt class="py-name">ch1</tt><tt class="py-op">)</tt> </tt>
<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">unichr</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ch</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-string">'"/\\'</tt><tt class="py-op">:</tt> </tt>
<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-70" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-70', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid escaped JSON character: '%s' in %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">ch</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-71', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt> <tt class="py-op">+</tt> <tt class="py-name">ch</tt> </tt>
<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">StopIteration</tt><tt class="py-op">:</tt> </tt>
<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-72" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-72', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON string: '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-73', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-74', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'"'</tt> </tt>
<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
</div><a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> </tt>
<a name="JsonReader._hexDigitToInt"></a><div id="JsonReader._hexDigitToInt-def"><a name="L152"></a><tt class="py-lineno">152</tt> <a class="py-toggle" href="#" id="JsonReader._hexDigitToInt-toggle" onclick="return toggle('JsonReader._hexDigitToInt');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_hexDigitToInt">_hexDigitToInt</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ch</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader._hexDigitToInt-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._hexDigitToInt-expanded"><a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="scapi.json.JsonReader.hex_digits" class="py-name" href="#" onclick="return doclink('link-75', 'hex_digits', 'link-0');">hex_digits</a></tt><tt class="py-op">[</tt><tt class="py-name">ch</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt>
<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">ch</tt><tt class="py-op">)</tt> </tt>
<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-76" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-76', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"The character %s is not a hex digit."</tt> <tt class="py-op">%</tt> <tt class="py-name">ch</tt> </tt>
<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
</div><a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> </tt>
<a name="JsonReader._readComment"></a><div id="JsonReader._readComment-def"><a name="L162"></a><tt class="py-lineno">162</tt> <a class="py-toggle" href="#" id="JsonReader._readComment-toggle" onclick="return toggle('JsonReader._readComment');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readComment">_readComment</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader._readComment-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readComment-expanded"><a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-77', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"/"</tt> </tt>
<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-name">second</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-78', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">second</tt> <tt class="py-op">==</tt> <tt class="py-string">"/"</tt><tt class="py-op">:</tt> </tt>
<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Method scapi.json.JsonReader._readDoubleSolidusComment()=scapi.json.JsonReader-class.html#_readDoubleSolidusComment"><a title="scapi.json.JsonReader._readDoubleSolidusComment" class="py-name" href="#" onclick="return doclink('link-79', '_readDoubleSolidusComment', 'link-79');">_readDoubleSolidusComment</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">second</tt> <tt class="py-op">==</tt> <tt class="py-string">'*'</tt><tt class="py-op">:</tt> </tt>
<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Method scapi.json.JsonReader._readCStyleComment()=scapi.json.JsonReader-class.html#_readCStyleComment"><a title="scapi.json.JsonReader._readCStyleComment" class="py-name" href="#" onclick="return doclink('link-80', '_readCStyleComment', 'link-80');">_readCStyleComment</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-81" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-81', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON comment: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-82', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> </tt>
<a name="JsonReader._readCStyleComment"></a><div id="JsonReader._readCStyleComment-def"><a name="L172"></a><tt class="py-lineno">172</tt> <a class="py-toggle" href="#" id="JsonReader._readCStyleComment-toggle" onclick="return toggle('JsonReader._readCStyleComment');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readCStyleComment">_readCStyleComment</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader._readCStyleComment-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readCStyleComment-expanded"><a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-keyword">not</tt> <tt class="py-name">done</tt><tt class="py-op">:</tt> </tt>
<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-83', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">ch</tt> <tt class="py-op">==</tt> <tt class="py-string">"*"</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-84', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"/"</tt><tt class="py-op">)</tt> </tt>
<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">done</tt> <tt class="py-keyword">and</tt> <tt class="py-name">ch</tt> <tt class="py-op">==</tt> <tt class="py-string">"/"</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-85', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"*"</tt><tt class="py-op">:</tt> </tt>
<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-86" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-86', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON comment: %s, '/*' cannot be embedded in the comment."</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-87', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-88', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">StopIteration</tt><tt class="py-op">:</tt> </tt>
<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-89" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-89', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON comment: %s, expected */"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-90', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> </tt>
<a name="JsonReader._readDoubleSolidusComment"></a><div id="JsonReader._readDoubleSolidusComment-def"><a name="L184"></a><tt class="py-lineno">184</tt> <a class="py-toggle" href="#" id="JsonReader._readDoubleSolidusComment-toggle" onclick="return toggle('JsonReader._readDoubleSolidusComment');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readDoubleSolidusComment">_readDoubleSolidusComment</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader._readDoubleSolidusComment-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readDoubleSolidusComment-expanded"><a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-91', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">ch</tt> <tt class="py-op">!=</tt> <tt class="py-string">"\r"</tt> <tt class="py-keyword">and</tt> <tt class="py-name">ch</tt> <tt class="py-op">!=</tt> <tt class="py-string">"\n"</tt><tt class="py-op">:</tt> </tt>
<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-92', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">StopIteration</tt><tt class="py-op">:</tt> </tt>
<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
</div><a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> </tt>
<a name="JsonReader._readArray"></a><div id="JsonReader._readArray-def"><a name="L192"></a><tt class="py-lineno">192</tt> <a class="py-toggle" href="#" id="JsonReader._readArray-toggle" onclick="return toggle('JsonReader._readArray');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readArray">_readArray</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader._readArray-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readArray-expanded"><a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-93', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'['</tt> </tt>
<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-94', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">']'</tt> </tt>
<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-keyword">not</tt> <tt class="py-name">done</tt><tt class="py-op">:</tt> </tt>
<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="scapi.json.JsonReader._read" class="py-name" href="#" onclick="return doclink('link-95', '_read', 'link-3');">_read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="scapi.json.JsonReader._eatWhitespace" class="py-name" href="#" onclick="return doclink('link-96', '_eatWhitespace', 'link-4');">_eatWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-97', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">']'</tt> </tt>
<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">done</tt><tt class="py-op">:</tt> </tt>
<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-98', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ch</tt> <tt class="py-op">!=</tt> <tt class="py-string">","</tt><tt class="py-op">:</tt> </tt>
<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-99" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-99', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON array: '%s' due to: '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-100', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">ch</tt><tt class="py-op">)</tt> </tt>
<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-string">']'</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-101', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
</div><a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> </tt>
<a name="JsonReader._readObject"></a><div id="JsonReader._readObject-def"><a name="L208"></a><tt class="py-lineno">208</tt> <a class="py-toggle" href="#" id="JsonReader._readObject-toggle" onclick="return toggle('JsonReader._readObject');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_readObject">_readObject</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader._readObject-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._readObject-expanded"><a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-102', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'{'</tt> </tt>
<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-103', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'}'</tt> </tt>
<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-keyword">not</tt> <tt class="py-name">done</tt><tt class="py-op">:</tt> </tt>
<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="scapi.json.JsonReader._read" class="py-name" href="#" onclick="return doclink('link-104', '_read', 'link-3');">_read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">StringType</tt><tt class="py-op">:</tt> </tt>
<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-105" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-105', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON object key (should be a string): %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">key</tt> </tt>
<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="scapi.json.JsonReader._eatWhitespace" class="py-name" href="#" onclick="return doclink('link-106', '_eatWhitespace', 'link-4');">_eatWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-107', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ch</tt> <tt class="py-op">!=</tt> <tt class="py-string">":"</tt><tt class="py-op">:</tt> </tt>
<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-108" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-108', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON object: '%s' due to: '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-109', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">ch</tt><tt class="py-op">)</tt> </tt>
<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="scapi.json.JsonReader._eatWhitespace" class="py-name" href="#" onclick="return doclink('link-110', '_eatWhitespace', 'link-4');">_eatWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="scapi.json.JsonReader._read" class="py-name" href="#" onclick="return doclink('link-111', '_read', 'link-3');">_read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">val</tt> </tt>
<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="scapi.json.JsonReader._eatWhitespace" class="py-name" href="#" onclick="return doclink('link-112', '_eatWhitespace', 'link-4');">_eatWhitespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-113', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'}'</tt> </tt>
<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">done</tt><tt class="py-op">:</tt> </tt>
<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">ch</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-114', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ch</tt> <tt class="py-op">!=</tt> <tt class="py-string">","</tt><tt class="py-op">:</tt> </tt>
<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-115" class="py-name"><a title="scapi.json.ReadException" class="py-name" href="#" onclick="return doclink('link-115', 'ReadException', 'link-8');">ReadException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Not a valid JSON array: '%s' due to: '%s'"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="scapi.json._StringGenerator.all" class="py-name" href="#" onclick="return doclink('link-116', 'all', 'link-9');">all</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">ch</tt><tt class="py-op">)</tt> </tt>
<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-117', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"}"</tt> </tt>
<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
</div><a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> </tt>
<a name="JsonReader._eatWhitespace"></a><div id="JsonReader._eatWhitespace-def"><a name="L232"></a><tt class="py-lineno">232</tt> <a class="py-toggle" href="#" id="JsonReader._eatWhitespace-toggle" onclick="return toggle('JsonReader._eatWhitespace');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_eatWhitespace">_eatWhitespace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader._eatWhitespace-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._eatWhitespace-expanded"><a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-118', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">p</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">p</tt> <tt class="py-keyword">in</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">whitespace</tt> <tt class="py-keyword">or</tt> <tt class="py-name">p</tt> <tt class="py-op">==</tt> <tt class="py-string">'/'</tt><tt class="py-op">:</tt> </tt>
<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">p</tt> <tt class="py-op">==</tt> <tt class="py-string">'/'</tt><tt class="py-op">:</tt> </tt>
<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="scapi.json.JsonReader._readComment" class="py-name" href="#" onclick="return doclink('link-119', '_readComment', 'link-26');">_readComment</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="scapi.json.JsonReader._next" class="py-name" href="#" onclick="return doclink('link-120', '_next', 'link-43');">_next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="scapi.json.JsonReader._peek" class="py-name" href="#" onclick="return doclink('link-121', '_peek', 'link-6');">_peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> </tt>
<a name="JsonReader._peek"></a><div id="JsonReader._peek-def"><a name="L241"></a><tt class="py-lineno">241</tt> <a class="py-toggle" href="#" id="JsonReader._peek-toggle" onclick="return toggle('JsonReader._peek');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_peek">_peek</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader._peek-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._peek-expanded"><a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="scapi.json._StringGenerator.peek" class="py-name" href="#" onclick="return doclink('link-122', 'peek', 'link-5');">peek</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> </tt>
<a name="JsonReader._next"></a><div id="JsonReader._next-def"><a name="L244"></a><tt class="py-lineno">244</tt> <a class="py-toggle" href="#" id="JsonReader._next-toggle" onclick="return toggle('JsonReader._next');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonReader-class.html#_next">_next</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonReader._next-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonReader._next-expanded"><a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_generator</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name" targets="Method scapi.json._StringGenerator.next()=scapi.json._StringGenerator-class.html#next"><a title="scapi.json._StringGenerator.next" class="py-name" href="#" onclick="return doclink('link-123', 'next', 'link-123');">next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> </tt>
<a name="JsonWriter"></a><div id="JsonWriter-def"><a name="L247"></a><tt class="py-lineno">247</tt> <a class="py-toggle" href="#" id="JsonWriter-toggle" onclick="return toggle('JsonWriter');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.json.JsonWriter-class.html">JsonWriter</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonWriter-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="JsonWriter-expanded"><a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> </tt>
<a name="JsonWriter._append"></a><div id="JsonWriter._append-def"><a name="L249"></a><tt class="py-lineno">249</tt> <a class="py-toggle" href="#" id="JsonWriter._append-toggle" onclick="return toggle('JsonWriter._append');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonWriter-class.html#_append">_append</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonWriter._append-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonWriter._append-expanded"><a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_results</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
</div><a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> </tt>
<a name="JsonWriter.write"></a><div id="JsonWriter.write-def"><a name="L252"></a><tt class="py-lineno">252</tt> <a class="py-toggle" href="#" id="JsonWriter.write-toggle" onclick="return toggle('JsonWriter.write');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonWriter-class.html#write">write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">obj</tt><tt class="py-op">,</tt> <tt class="py-param">escaped_forward_slash</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonWriter.write-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonWriter.write-expanded"><a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_escaped_forward_slash</tt> <tt class="py-op">=</tt> <tt class="py-name">escaped_forward_slash</tt> </tt>
<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_results</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name" targets="Method scapi.json.JsonWriter._write()=scapi.json.JsonWriter-class.html#_write"><a title="scapi.json.JsonWriter._write" class="py-name" href="#" onclick="return doclink('link-124', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt>
<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">""</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_results</tt><tt class="py-op">)</tt> </tt>
</div><a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> </tt>
<a name="JsonWriter._write"></a><div id="JsonWriter._write-def"><a name="L258"></a><tt class="py-lineno">258</tt> <a class="py-toggle" href="#" id="JsonWriter._write-toggle" onclick="return toggle('JsonWriter._write');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json.JsonWriter-class.html#_write">_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">obj</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="JsonWriter._write-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="JsonWriter._write-expanded"><a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-name">ty</tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt>
<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ty</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">DictType</tt><tt class="py-op">:</tt> </tt>
<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt>
<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name" targets="Method scapi.json.JsonWriter._append()=scapi.json.JsonWriter-class.html#_append"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-125', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">"{"</tt><tt class="py-op">)</tt> </tt>
<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="scapi.json.JsonWriter._write" class="py-name" href="#" onclick="return doclink('link-126', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">)</tt> </tt>
<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-127', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">":"</tt><tt class="py-op">)</tt> </tt>
<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="scapi.json.JsonWriter._write" class="py-name" href="#" onclick="return doclink('link-128', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt> </tt>
<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">n</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">n</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-129', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">","</tt><tt class="py-op">)</tt> </tt>
<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-130', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">"}"</tt><tt class="py-op">)</tt> </tt>
<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ty</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ListType</tt> <tt class="py-keyword">or</tt> <tt class="py-name">ty</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">TupleType</tt><tt class="py-op">:</tt> </tt>
<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt>
<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-131', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">"["</tt><tt class="py-op">)</tt> </tt>
<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">obj</tt><tt class="py-op">:</tt> </tt>
<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="scapi.json.JsonWriter._write" class="py-name" href="#" onclick="return doclink('link-132', '_write', 'link-124');">_write</a></tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">n</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">n</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-133', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">","</tt><tt class="py-op">)</tt> </tt>
<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-134', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">"]"</tt><tt class="py-op">)</tt> </tt>
<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ty</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">StringType</tt> <tt class="py-keyword">or</tt> <tt class="py-name">ty</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">UnicodeType</tt><tt class="py-op">:</tt> </tt>
<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-135', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">'"'</tt><tt class="py-op">)</tt> </tt>
<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\\'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\\'</tt><tt class="py-op">)</tt> </tt>
<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_escaped_forward_slash</tt><tt class="py-op">:</tt> </tt>
<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\/'</tt><tt class="py-op">)</tt> </tt>
<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'"'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\"'</tt><tt class="py-op">)</tt> </tt>
<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\b'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\b'</tt><tt class="py-op">)</tt> </tt>
<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\f'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\f'</tt><tt class="py-op">)</tt> </tt>
<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\n'</tt><tt class="py-op">)</tt> </tt>
<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\r'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\r'</tt><tt class="py-op">)</tt> </tt>
<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-name">obj</tt> <tt class="py-op">=</tt> <tt class="py-name">obj</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\t'</tt><tt class="py-op">,</tt> <tt class="py-string">r'\t'</tt><tt class="py-op">)</tt> </tt>
<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-136', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt>
<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-137', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">'"'</tt><tt class="py-op">)</tt> </tt>
<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ty</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">IntType</tt> <tt class="py-keyword">or</tt> <tt class="py-name">ty</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">LongType</tt><tt class="py-op">:</tt> </tt>
<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-138', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">ty</tt> <tt class="py-keyword">is</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">FloatType</tt><tt class="py-op">:</tt> </tt>
<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-139', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">"%f"</tt> <tt class="py-op">%</tt> <tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt>
<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">obj</tt> <tt class="py-keyword">is</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-140', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">"true"</tt><tt class="py-op">)</tt> </tt>
<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">obj</tt> <tt class="py-keyword">is</tt> <tt class="py-name">False</tt><tt class="py-op">:</tt> </tt>
<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-141', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">"false"</tt><tt class="py-op">)</tt> </tt>
<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">obj</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="scapi.json.JsonWriter._append" class="py-name" href="#" onclick="return doclink('link-142', '_append', 'link-125');">_append</a></tt><tt class="py-op">(</tt><tt class="py-string">"null"</tt><tt class="py-op">)</tt> </tt>
<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-143" class="py-name" targets="Class scapi.json.WriteException=scapi.json.WriteException-class.html"><a title="scapi.json.WriteException" class="py-name" href="#" onclick="return doclink('link-143', 'WriteException', 'link-143');">WriteException</a></tt><tt class="py-op">,</tt> <tt class="py-string">"Cannot write in JSON: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> </tt>
<a name="write"></a><div id="write-def"><a name="L306"></a><tt class="py-lineno">306</tt> <a class="py-toggle" href="#" id="write-toggle" onclick="return toggle('write');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json-module.html#write">write</a><tt class="py-op">(</tt><tt class="py-param">obj</tt><tt class="py-op">,</tt> <tt class="py-param">escaped_forward_slash</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="write-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="write-expanded"><a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-144" class="py-name" targets="Class scapi.json.JsonWriter=scapi.json.JsonWriter-class.html"><a title="scapi.json.JsonWriter" class="py-name" href="#" onclick="return doclink('link-144', 'JsonWriter', 'link-144');">JsonWriter</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name" targets="Method scapi.json.JsonWriter.write()=scapi.json.JsonWriter-class.html#write,Function scapi.json.write()=scapi.json-module.html#write"><a title="scapi.json.JsonWriter.write
scapi.json.write" class="py-name" href="#" onclick="return doclink('link-145', 'write', 'link-145');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">obj</tt><tt class="py-op">,</tt> <tt class="py-name">escaped_forward_slash</tt><tt class="py-op">)</tt> </tt>
</div><a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> </tt>
<a name="read"></a><div id="read-def"><a name="L309"></a><tt class="py-lineno">309</tt> <a class="py-toggle" href="#" id="read-toggle" onclick="return toggle('read');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.json-module.html#read">read</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="read-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="read-expanded"><a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-146" class="py-name" targets="Class scapi.json.JsonReader=scapi.json.JsonReader-class.html"><a title="scapi.json.JsonReader" class="py-name" href="#" onclick="return doclink('link-146', 'JsonReader', 'link-146');">JsonReader</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name" targets="Method scapi.json.JsonReader.read()=scapi.json.JsonReader-class.html#read,Function scapi.json.read()=scapi.json-module.html#read"><a title="scapi.json.JsonReader.read
scapi.json.read" class="py-name" href="#" onclick="return doclink('link-147', 'read', 'link-147');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
</div><a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
</script>
</pre>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,544 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.json.JsonReader</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
<a href="scapi.json-module.html">Module&nbsp;json</a> ::
Class&nbsp;JsonReader
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.json.JsonReader-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class JsonReader</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.json-pysrc.html#JsonReader">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
<strong class="uidshort">JsonReader</strong>
</pre>
<hr />
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="read"></a><span class="summary-sig-name">read</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">s</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader.read">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_read"></a><span class="summary-sig-name">_read</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._read">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_readTrue"></a><span class="summary-sig-name">_readTrue</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readTrue">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_readFalse"></a><span class="summary-sig-name">_readFalse</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readFalse">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_readNull"></a><span class="summary-sig-name">_readNull</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readNull">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_assertNext"></a><span class="summary-sig-name">_assertNext</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">ch</span>,
<span class="summary-sig-arg">target</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._assertNext">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_readNumber"></a><span class="summary-sig-name">_readNumber</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readNumber">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_readString"></a><span class="summary-sig-name">_readString</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readString">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_hexDigitToInt"></a><span class="summary-sig-name">_hexDigitToInt</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">ch</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._hexDigitToInt">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_readComment"></a><span class="summary-sig-name">_readComment</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readComment">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_readCStyleComment"></a><span class="summary-sig-name">_readCStyleComment</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readCStyleComment">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_readDoubleSolidusComment"></a><span class="summary-sig-name">_readDoubleSolidusComment</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readDoubleSolidusComment">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_readArray"></a><span class="summary-sig-name">_readArray</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readArray">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_readObject"></a><span class="summary-sig-name">_readObject</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._readObject">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_eatWhitespace"></a><span class="summary-sig-name">_eatWhitespace</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._eatWhitespace">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_peek"></a><span class="summary-sig-name">_peek</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._peek">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_next"></a><span class="summary-sig-name">_next</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonReader._next">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__hash__</code>,
<code>__init__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__repr__</code>,
<code>__setattr__</code>,
<code>__str__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== CLASS VARIABLES ==================== -->
<a name="section-ClassVariables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.json.JsonReader-class.html#hex_digits" class="summary-name">hex_digits</a> = <code title="{'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">A</code><code class="variable-quote">'</code><code class="variable-op">: </code>10<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">B</code><code class="variable-quote">'</code><code class="variable-op">: </code>11<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">C</code><code class="variable-quote">'</code><code class="variable-op">: </code>12<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">D</code><code class="variable-quote">'</code><code class="variable-op">: </code>13<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">E</code><code class="variable-quote">'</code><code class="variable-op">: </code>14<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">F</code><code class="variable-quote">'</code><code class="variable-ellipsis">...</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.json.JsonReader-class.html#escapes" class="summary-name">escapes</a> = <code title="{'b': '\x08', 'f': '\x0c', 'n': '\n', 'r': '\r', 't': '\t'}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">b</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\x08</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">f</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\x0c</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">n</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\n</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">r</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\r</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">t</code><code class="variable-quote">'</code><code class="variable-ellipsis">...</code></code>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
<a name="section-ClassVariableDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Class Variable Details</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-ClassVariableDetails"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
</table>
<a name="hex_digits"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<h3 class="epydoc">hex_digits</h3>
<dl class="fields">
</dl>
<dl class="fields">
<dt>Value:</dt>
<dd><table><tr><td><pre class="variable">
<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">A</code><code class="variable-quote">'</code><code class="variable-op">: </code>10<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">B</code><code class="variable-quote">'</code><code class="variable-op">: </code>11<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">C</code><code class="variable-quote">'</code><code class="variable-op">: </code>12<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">D</code><code class="variable-quote">'</code><code class="variable-op">: </code>13<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">E</code><code class="variable-quote">'</code><code class="variable-op">: </code>14<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">F</code><code class="variable-quote">'</code><code class="variable-op">: </code>15<code class="variable-group">}</code>
</pre></td></tr></table>
</dd>
</dl>
</td></tr></table>
</div>
<a name="escapes"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<h3 class="epydoc">escapes</h3>
<dl class="fields">
</dl>
<dl class="fields">
<dt>Value:</dt>
<dd><table><tr><td><pre class="variable">
<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">b</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\x08</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">f</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\x0c</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">n</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\n</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">r</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\r</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">t</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">\t</code><code class="variable-quote">'</code><code class="variable-group">}</code>
</pre></td></tr></table>
</dd>
</dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,233 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.json.JsonWriter</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
<a href="scapi.json-module.html">Module&nbsp;json</a> ::
Class&nbsp;JsonWriter
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.json.JsonWriter-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class JsonWriter</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.json-pysrc.html#JsonWriter">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
<strong class="uidshort">JsonWriter</strong>
</pre>
<hr />
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_append"></a><span class="summary-sig-name">_append</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">s</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonWriter._append">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="write"></a><span class="summary-sig-name">write</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">obj</span>,
<span class="summary-sig-arg">escaped_forward_slash</span>=<span class="summary-sig-default">False</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonWriter.write">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="_write"></a><span class="summary-sig-name">_write</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">obj</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#JsonWriter._write">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__hash__</code>,
<code>__init__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__repr__</code>,
<code>__setattr__</code>,
<code>__str__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,196 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.json.ReadException</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
<a href="scapi.json-module.html">Module&nbsp;json</a> ::
Class&nbsp;ReadException
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.json.ReadException-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class ReadException</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.json-pysrc.html#ReadException">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
exceptions.BaseException --+
|
exceptions.Exception --+
|
<strong class="uidshort">ReadException</strong>
</pre>
<hr />
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
<code>__init__</code>,
<code>__new__</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__getitem__</code>,
<code>__getslice__</code>,
<code>__reduce__</code>,
<code>__repr__</code>,
<code>__setattr__</code>,
<code>__setstate__</code>,
<code>__str__</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__hash__</code>,
<code>__reduce_ex__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
<code>args</code>,
<code>message</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,196 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.json.WriteException</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
<a href="scapi.json-module.html">Module&nbsp;json</a> ::
Class&nbsp;WriteException
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.json.WriteException-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class WriteException</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.json-pysrc.html#WriteException">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
exceptions.BaseException --+
|
exceptions.Exception --+
|
<strong class="uidshort">WriteException</strong>
</pre>
<hr />
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
<code>__init__</code>,
<code>__new__</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__getitem__</code>,
<code>__getslice__</code>,
<code>__reduce__</code>,
<code>__repr__</code>,
<code>__setattr__</code>,
<code>__setstate__</code>,
<code>__str__</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__hash__</code>,
<code>__reduce_ex__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
<code>args</code>,
<code>message</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,291 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.json._StringGenerator</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
<a href="scapi.json-module.html">Module&nbsp;json</a> ::
Class&nbsp;_StringGenerator
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.json._StringGenerator-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class _StringGenerator</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.json-pysrc.html#_StringGenerator">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
<strong class="uidshort">_StringGenerator</strong>
</pre>
<hr />
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="scapi.json._StringGenerator-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">string</span>)</span><br />
x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#_StringGenerator.__init__">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="peek"></a><span class="summary-sig-name">peek</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#_StringGenerator.peek">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="next"></a><span class="summary-sig-name">next</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#_StringGenerator.next">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="all"></a><span class="summary-sig-name">all</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.json-pysrc.html#_StringGenerator.all">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__getattribute__</code>,
<code>__hash__</code>,
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__repr__</code>,
<code>__setattr__</code>,
<code>__str__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Method Details</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-MethodDetails"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
</table>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
<span class="sig-arg">string</span>)</span>
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="scapi.json-pysrc.html#_StringGenerator.__init__">source&nbsp;code</a></span>&nbsp;
</td>
</tr></table>
<p>x.__init__(...) initializes x; see x.__class__.__doc__ for
signature</p>
<dl class="fields">
<dt>Overrides:
object.__init__
<dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,140 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.tests</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Package&nbsp;tests
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.tests-module.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== PACKAGE DESCRIPTION ==================== -->
<h1 class="epydoc">Package tests</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.tests-pysrc.html">source&nbsp;code</a></span></p>
<!-- ==================== SUBMODULES ==================== -->
<a name="section-Submodules"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Submodules</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Submodules"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr><td class="summary">
<ul class="nomargin">
<li> <strong class="uidlink"><a href="scapi.tests.scapi_tests-module.html">scapi.tests.scapi_tests</a></strong> </li>
<li> <strong class="uidlink"><a href="scapi.tests.test_connect-module.html">scapi.tests.test_connect</a></strong> </li>
<li> <strong class="uidlink"><a href="scapi.tests.test_oauth-module.html">scapi.tests.test_oauth</a></strong> </li>
</ul></td></tr>
</table>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.tests</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Package&nbsp;tests
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.tests-pysrc.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<h1 class="epydoc">Source Code for <a href="scapi.tests-module.html">Package scapi.tests</a></h1>
<pre class="py-src">
<a name="L1"></a><tt class="py-lineno">1</tt> <tt class="py-line"> </tt>
<a name="L2"></a><tt class="py-lineno">2</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
</script>
</pre>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,172 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.tests.scapi_tests</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
<a href="scapi.tests-module.html">Package&nbsp;tests</a> ::
Module&nbsp;scapi_tests
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.tests.scapi_tests-module.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== MODULE DESCRIPTION ==================== -->
<h1 class="epydoc">Module scapi_tests</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.tests.scapi_tests-pysrc.html">source&nbsp;code</a></span></p>
<!-- ==================== CLASSES ==================== -->
<a name="section-Classes"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Classes</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Classes"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.tests.scapi_tests.SCAPITests-class.html" class="summary-name">SCAPITests</a>
</td>
</tr>
</table>
<!-- ==================== VARIABLES ==================== -->
<a name="section-Variables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Variables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(&quot;scapi.tests&quot;)">logging.getLogger(&quot;scapi.tests&quot;)</code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="api_logger"></a><span class="summary-name">api_logger</span> = <code title="logging.getLogger(&quot;scapi&quot;)">logging.getLogger(&quot;scapi&quot;)</code>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,760 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.tests.scapi_tests</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
<a href="scapi.tests-module.html">Package&nbsp;tests</a> ::
Module&nbsp;scapi_tests
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.tests.scapi_tests-pysrc.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<h1 class="epydoc">Source Code for <a href="scapi.tests.scapi_tests-module.html">Module scapi.tests.scapi_tests</a></h1>
<pre class="py-src">
<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">__future__</tt> <tt class="py-keyword">import</tt> <tt class="py-name">with_statement</tt> </tt>
<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"> </tt>
<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib2</tt> </tt>
<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">itertools</tt> </tt>
<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">textwrap</tt> <tt class="py-keyword">import</tt> <tt class="py-name">dedent</tt> </tt>
<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pkg_resources</tt> </tt>
<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">webbrowser</tt> </tt>
<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">unittest</tt> <tt class="py-keyword">import</tt> <tt class="py-name">TestCase</tt> </tt>
<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"> </tt>
<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">configobj</tt> <tt class="py-keyword">import</tt> <tt class="py-name">ConfigObj</tt> </tt>
<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">validate</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Validator</tt> </tt>
<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"> </tt>
<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"> </tt>
<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package scapi=scapi-module.html"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-0', 'scapi', 'link-0');">scapi</a></tt> </tt>
<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-1', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module scapi.authentication=scapi.authentication-module.html"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-2', 'authentication', 'link-2');">authentication</a></tt> </tt>
<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt>
<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable scapi.authentication.logger=scapi.authentication-module.html#logger,Variable scapi.logger=scapi-module.html#logger,Variable scapi.tests.scapi_tests.logger=scapi.tests.scapi_tests-module.html#logger,Variable scapi.tests.test_connect.logger=scapi.tests.test_connect-module.html#logger,Variable scapi.tests.test_oauth.logger=scapi.tests.test_oauth-module.html#logger"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-3', 'logger', 'link-3');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">"scapi.tests"</tt><tt class="py-op">)</tt> </tt>
<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"> </tt>
<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable scapi.tests.scapi_tests.api_logger=scapi.tests.scapi_tests-module.html#api_logger"><a title="scapi.tests.scapi_tests.api_logger" class="py-name" href="#" onclick="return doclink('link-4', 'api_logger', 'link-4');">api_logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">"scapi"</tt><tt class="py-op">)</tt> </tt>
<a name="SCAPITests"></a><div id="SCAPITests-def"><a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"> </tt>
<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"> </tt>
<a name="L24"></a><tt class="py-lineno"> 24</tt> <a class="py-toggle" href="#" id="SCAPITests-toggle" onclick="return toggle('SCAPITests');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html">SCAPITests</a><tt class="py-op">(</tt><tt class="py-base-class">TestCase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SCAPITests-expanded"><a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"> </tt>
<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> <tt id="link-5" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONFIG_NAME=scapi.tests.scapi_tests.SCAPITests-class.html#CONFIG_NAME,Variable scapi.tests.test_connect.CONFIG_NAME=scapi.tests.test_connect-module.html#CONFIG_NAME"><a title="scapi.tests.scapi_tests.SCAPITests.CONFIG_NAME
scapi.tests.test_connect.CONFIG_NAME" class="py-name" href="#" onclick="return doclink('link-5', 'CONFIG_NAME', 'link-5');">CONFIG_NAME</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"test.ini"</tt> </tt>
<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> <tt id="link-6" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.TOKEN=scapi.tests.scapi_tests.SCAPITests-class.html#TOKEN,Variable scapi.tests.test_connect.TOKEN=scapi.tests.test_connect-module.html#TOKEN,Variable scapi.tests.test_oauth.TOKEN=scapi.tests.test_oauth-module.html#TOKEN"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN
scapi.tests.test_connect.TOKEN
scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-6', 'TOKEN', 'link-6');">TOKEN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> <tt id="link-7" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.SECRET=scapi.tests.scapi_tests.SCAPITests-class.html#SECRET,Variable scapi.tests.test_connect.SECRET=scapi.tests.test_connect-module.html#SECRET,Variable scapi.tests.test_oauth.SECRET=scapi.tests.test_oauth-module.html#SECRET"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET
scapi.tests.test_connect.SECRET
scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-7', 'SECRET', 'link-7');">SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> <tt id="link-8" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONSUMER=scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER,Variable scapi.tests.test_connect.CONSUMER=scapi.tests.test_connect-module.html#CONSUMER,Variable scapi.tests.test_oauth.CONSUMER=scapi.tests.test_oauth-module.html#CONSUMER"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-8', 'CONSUMER', 'link-8');">CONSUMER</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> <tt id="link-9" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET=scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER_SECRET,Variable scapi.tests.test_connect.CONSUMER_SECRET=scapi.tests.test_connect-module.html#CONSUMER_SECRET,Variable scapi.tests.test_oauth.CONSUMER_SECRET=scapi.tests.test_oauth-module.html#CONSUMER_SECRET"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-9', 'CONSUMER_SECRET', 'link-9');">CONSUMER_SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> <tt id="link-10" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.API_HOST=scapi.tests.scapi_tests.SCAPITests-class.html#API_HOST,Variable scapi.tests.test_connect.API_HOST=scapi.tests.test_connect-module.html#API_HOST"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-10', 'API_HOST', 'link-10');">API_HOST</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> <tt id="link-11" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.USER=scapi.tests.scapi_tests.SCAPITests-class.html#USER,Variable scapi.tests.test_connect.USER=scapi.tests.test_connect-module.html#USER"><a title="scapi.tests.scapi_tests.SCAPITests.USER
scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-11', 'USER', 'link-11');">USER</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> <tt id="link-12" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.PASSWORD=scapi.tests.scapi_tests.SCAPITests-class.html#PASSWORD,Variable scapi.tests.test_connect.PASSWORD=scapi.tests.test_connect-module.html#PASSWORD"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD
scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-12', 'PASSWORD', 'link-12');">PASSWORD</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> <tt id="link-13" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR=scapi.tests.scapi_tests.SCAPITests-class.html#AUTHENTICATOR"><a title="scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR" class="py-name" href="#" onclick="return doclink('link-13', 'AUTHENTICATOR', 'link-13');">AUTHENTICATOR</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> <tt id="link-14" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.RUN_INTERACTIVE_TESTS=scapi.tests.scapi_tests.SCAPITests-class.html#RUN_INTERACTIVE_TESTS,Variable scapi.tests.test_connect.RUN_INTERACTIVE_TESTS=scapi.tests.test_connect-module.html#RUN_INTERACTIVE_TESTS"><a title="scapi.tests.scapi_tests.SCAPITests.RUN_INTERACTIVE_TESTS
scapi.tests.test_connect.RUN_INTERACTIVE_TESTS" class="py-name" href="#" onclick="return doclink('link-14', 'RUN_INTERACTIVE_TESTS', 'link-14');">RUN_INTERACTIVE_TESTS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> </tt>
<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.setUp"></a><div id="SCAPITests.setUp-def"><a name="L38"></a><tt class="py-lineno"> 38</tt> <a class="py-toggle" href="#" id="SCAPITests.setUp-toggle" onclick="return toggle('SCAPITests.setUp');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#setUp">setUp</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.setUp-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.setUp-expanded"><a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method scapi.tests.scapi_tests.SCAPITests._load_config()=scapi.tests.scapi_tests.SCAPITests-class.html#_load_config"><a title="scapi.tests.scapi_tests.SCAPITests._load_config" class="py-name" href="#" onclick="return doclink('link-15', '_load_config', 'link-15');">_load_config</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">pkg_resources</tt><tt class="py-op">.</tt><tt class="py-name">resource_exists</tt><tt class="py-op">(</tt><tt class="py-string">"scapi.tests.test_connect"</tt><tt class="py-op">,</tt> <tt class="py-string">"knaster.mp3"</tt><tt class="py-op">)</tt> </tt>
<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">pkg_resources</tt><tt class="py-op">.</tt><tt class="py-name">resource_stream</tt><tt class="py-op">(</tt><tt class="py-string">"scapi.tests.test_connect"</tt><tt class="py-op">,</tt> <tt class="py-string">"knaster.mp3"</tt><tt class="py-op">)</tt> </tt>
<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">artwork_data</tt> <tt class="py-op">=</tt> <tt class="py-name">pkg_resources</tt><tt class="py-op">.</tt><tt class="py-name">resource_stream</tt><tt class="py-op">(</tt><tt class="py-string">"scapi.tests.test_connect"</tt><tt class="py-op">,</tt> <tt class="py-string">"spam.jpg"</tt><tt class="py-op">)</tt> </tt>
</div><a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> </tt>
<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt id="link-16" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONFIGSPEC=scapi.tests.scapi_tests.SCAPITests-class.html#CONFIGSPEC"><a title="scapi.tests.scapi_tests.SCAPITests.CONFIGSPEC" class="py-name" href="#" onclick="return doclink('link-16', 'CONFIGSPEC', 'link-16');">CONFIGSPEC</a></tt><tt class="py-op">=</tt><tt class="py-name">dedent</tt><tt class="py-op">(</tt><tt class="py-string">"""</tt> </tt>
<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-string"> [api]</tt> </tt>
<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-string"> token=string</tt> </tt>
<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-string"> secret=string</tt> </tt>
<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-string"> consumer=string</tt> </tt>
<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-string"> consumer_secret=string</tt> </tt>
<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-string"> api_host=string</tt> </tt>
<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-string"> user=string</tt> </tt>
<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-string"> password=string</tt> </tt>
<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-string"> authenticator=option('oauth', 'base', default='oauth')</tt> </tt>
<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-string"> </tt> </tt>
<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-string"> [proxy]</tt> </tt>
<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-string"> use_proxy=boolean(default=false)</tt> </tt>
<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-string"> proxy=string(default=http://127.0.0.1:10000/)</tt> </tt>
<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-string"></tt> </tt>
<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-string"> [logging]</tt> </tt>
<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-string"> test_logger=string(default=ERROR)</tt> </tt>
<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-string"> api_logger=string(default=ERROR)</tt> </tt>
<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-string"></tt> </tt>
<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-string"> [test]</tt> </tt>
<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-string"> run_interactive_tests=boolean(default=false)</tt> </tt>
<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-string"> """</tt><tt class="py-op">)</tt> </tt>
<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> </tt>
<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> </tt>
<a name="SCAPITests._load_config"></a><div id="SCAPITests._load_config-def"><a name="L68"></a><tt class="py-lineno"> 68</tt> <a class="py-toggle" href="#" id="SCAPITests._load_config-toggle" onclick="return toggle('SCAPITests._load_config');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#_load_config">_load_config</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests._load_config-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests._load_config-expanded"><a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> Loads the configuration by looking from</tt> </tt>
<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt class="py-docstring"> - the environment variable SCAPI_CONFIG</tt> </tt>
<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring"> - the installation location upwards until it finds test.ini</tt> </tt>
<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"> - the current working directory upwards until it finds test.ini</tt> </tt>
<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> Raises an error if there is no config found</tt> </tt>
<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-name">config_name</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONFIG_NAME
scapi.tests.test_connect.CONFIG_NAME" class="py-name" href="#" onclick="return doclink('link-17', 'CONFIG_NAME', 'link-5');">CONFIG_NAME</a></tt> </tt>
<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> </tt>
<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> </tt>
<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"SCAPI_CONFIG"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">:</tt> </tt>
<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">"SCAPI_CONFIG"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">"SCAPI_CONFIG"</tt><tt class="py-op">]</tt> </tt>
<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> </tt>
<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">search_for_config</tt><tt class="py-op">(</tt><tt class="py-param">current</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">current</tt><tt class="py-op">:</tt> </tt>
<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">current</tt><tt class="py-op">,</tt> <tt class="py-name">config_name</tt><tt class="py-op">)</tt> </tt>
<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">name</tt> </tt>
<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">new_current</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">dirname</tt><tt class="py-op">(</tt><tt class="py-name">current</tt><tt class="py-op">)</tt> </tt>
<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">new_current</tt> <tt class="py-op">==</tt> <tt class="py-name">current</tt><tt class="py-op">:</tt> </tt>
<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">current</tt> <tt class="py-op">=</tt> <tt class="py-name">new_current</tt> </tt>
</div><a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> </tt>
<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">search_for_config</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">dirname</tt><tt class="py-op">(</tt><tt class="py-name">__file__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">search_for_config</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">getcwd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> </tt>
<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">name</tt><tt class="py-op">:</tt> </tt>
<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">Exception</tt><tt class="py-op">(</tt><tt class="py-string">"No test configuration file found!"</tt><tt class="py-op">)</tt> </tt>
<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> </tt>
<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">ConfigObj</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">configspec</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONFIGSPEC" class="py-name" href="#" onclick="return doclink('link-18', 'CONFIGSPEC', 'link-16');">CONFIGSPEC</a></tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">"\n"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">Validator</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">validate</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">Exception</tt><tt class="py-op">(</tt><tt class="py-string">"Config file validation error"</tt><tt class="py-op">)</tt> </tt>
<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> </tt>
<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-name">api</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">[</tt><tt class="py-string">'api'</tt><tt class="py-op">]</tt> </tt>
<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN
scapi.tests.test_connect.TOKEN
scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-19', 'TOKEN', 'link-6');">TOKEN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Class Method scapi.RESTBase.get()=scapi.RESTBase-class.html#get"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-20', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'token'</tt><tt class="py-op">)</tt> </tt>
<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET
scapi.tests.test_connect.SECRET
scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-21', 'SECRET', 'link-7');">SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-22', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'secret'</tt><tt class="py-op">)</tt> </tt>
<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-23', 'CONSUMER', 'link-8');">CONSUMER</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-24', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'consumer'</tt><tt class="py-op">)</tt> </tt>
<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-25', 'CONSUMER_SECRET', 'link-9');">CONSUMER_SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-26', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'consumer_secret'</tt><tt class="py-op">)</tt> </tt>
<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-27', 'API_HOST', 'link-10');">API_HOST</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-28', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'api_host'</tt><tt class="py-op">)</tt> </tt>
<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.USER
scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-29', 'USER', 'link-11');">USER</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-30', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'user'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD
scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-31', 'PASSWORD', 'link-12');">PASSWORD</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-32', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'password'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR" class="py-name" href="#" onclick="return doclink('link-33', 'AUTHENTICATOR', 'link-13');">AUTHENTICATOR</a></tt> <tt class="py-op">=</tt> <tt class="py-name">api</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-34', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"authenticator"</tt><tt class="py-op">)</tt> </tt>
<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> </tt>
<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-comment"># reset the hard-coded values in the api</tt> </tt>
<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-35', 'API_HOST', 'link-10');">API_HOST</a></tt><tt class="py-op">:</tt> </tt>
<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt id="link-36" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-36', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Variable scapi.AUTHORIZATION_URL=scapi-module.html#AUTHORIZATION_URL"><a title="scapi.AUTHORIZATION_URL" class="py-name" href="#" onclick="return doclink('link-37', 'AUTHORIZATION_URL', 'link-37');">AUTHORIZATION_URL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"http://%s/oauth/authorize"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-38', 'API_HOST', 'link-10');">API_HOST</a></tt> </tt>
<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt id="link-39" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-39', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Variable scapi.REQUEST_TOKEN_URL=scapi-module.html#REQUEST_TOKEN_URL"><a title="scapi.REQUEST_TOKEN_URL" class="py-name" href="#" onclick="return doclink('link-40', 'REQUEST_TOKEN_URL', 'link-40');">REQUEST_TOKEN_URL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://%s/oauth/request_token'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-41', 'API_HOST', 'link-10');">API_HOST</a></tt> </tt>
<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt id="link-42" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-42', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Variable scapi.ACCESS_TOKEN_URL=scapi-module.html#ACCESS_TOKEN_URL"><a title="scapi.ACCESS_TOKEN_URL" class="py-name" href="#" onclick="return doclink('link-43', 'ACCESS_TOKEN_URL', 'link-43');">ACCESS_TOKEN_URL</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://%s/oauth/access_token'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-44', 'API_HOST', 'link-10');">API_HOST</a></tt> </tt>
<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> </tt>
<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"proxy"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parser</tt> <tt class="py-keyword">and</tt> <tt class="py-name">parser</tt><tt class="py-op">[</tt><tt class="py-string">"proxy"</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">"use_proxy"</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt id="link-45" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-45', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Variable scapi.USE_PROXY=scapi-module.html#USE_PROXY"><a title="scapi.USE_PROXY" class="py-name" href="#" onclick="return doclink('link-46', 'USE_PROXY', 'link-46');">USE_PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt id="link-47" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-47', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Variable scapi.PROXY=scapi-module.html#PROXY"><a title="scapi.PROXY" class="py-name" href="#" onclick="return doclink('link-48', 'PROXY', 'link-48');">PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">[</tt><tt class="py-string">"proxy"</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">"proxy"</tt><tt class="py-op">]</tt> </tt>
<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> </tt>
<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"logging"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parser</tt><tt class="py-op">:</tt> </tt>
<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt id="link-49" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-49', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">logging</tt><tt class="py-op">,</tt> <tt class="py-name">parser</tt><tt class="py-op">[</tt><tt class="py-string">"logging"</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">"test_logger"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt id="link-50" class="py-name"><a title="scapi.tests.scapi_tests.api_logger" class="py-name" href="#" onclick="return doclink('link-50', 'api_logger', 'link-4');">api_logger</a></tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">logging</tt><tt class="py-op">,</tt> <tt class="py-name">parser</tt><tt class="py-op">[</tt><tt class="py-string">"logging"</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">"api_logger"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> </tt>
<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.RUN_INTERACTIVE_TESTS
scapi.tests.test_connect.RUN_INTERACTIVE_TESTS" class="py-name" href="#" onclick="return doclink('link-51', 'RUN_INTERACTIVE_TESTS', 'link-14');">RUN_INTERACTIVE_TESTS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">[</tt><tt class="py-string">"test"</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">"run_interactive_tests"</tt><tt class="py-op">]</tt> </tt>
</div><a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> </tt>
<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> </tt>
<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
<a name="SCAPITests.root"></a><div id="SCAPITests.root-def"><a name="L137"></a><tt class="py-lineno">137</tt> <a class="py-toggle" href="#" id="SCAPITests.root-toggle" onclick="return toggle('SCAPITests.root');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#root">root</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.root-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.root-expanded"><a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"> Return the properly configured root-scope.</tt> </tt>
<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR" class="py-name" href="#" onclick="return doclink('link-52', 'AUTHENTICATOR', 'link-13');">AUTHENTICATOR</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"oauth"</tt><tt class="py-op">:</tt> </tt>
<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">authenticator</tt> <tt class="py-op">=</tt> <tt id="link-53" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-53', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-54', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Class scapi.authentication.OAuthAuthenticator=scapi.authentication.OAuthAuthenticator-class.html"><a title="scapi.authentication.OAuthAuthenticator" class="py-name" href="#" onclick="return doclink('link-55', 'OAuthAuthenticator', 'link-55');">OAuthAuthenticator</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-56', 'CONSUMER', 'link-8');">CONSUMER</a></tt><tt class="py-op">,</tt> </tt>
<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-57', 'CONSUMER_SECRET', 'link-9');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> </tt>
<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN
scapi.tests.test_connect.TOKEN
scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-58', 'TOKEN', 'link-6');">TOKEN</a></tt><tt class="py-op">,</tt> </tt>
<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET
scapi.tests.test_connect.SECRET
scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-59', 'SECRET', 'link-7');">SECRET</a></tt><tt class="py-op">)</tt> </tt>
<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR" class="py-name" href="#" onclick="return doclink('link-60', 'AUTHENTICATOR', 'link-13');">AUTHENTICATOR</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"base"</tt><tt class="py-op">:</tt> </tt>
<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">authenticator</tt> <tt class="py-op">=</tt> <tt id="link-61" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-61', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-62', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Class scapi.authentication.BasicAuthenticator=scapi.authentication.BasicAuthenticator-class.html"><a title="scapi.authentication.BasicAuthenticator" class="py-name" href="#" onclick="return doclink('link-63', 'BasicAuthenticator', 'link-63');">BasicAuthenticator</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.USER
scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-64', 'USER', 'link-11');">USER</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD
scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-65', 'PASSWORD', 'link-12');">PASSWORD</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-66', 'CONSUMER', 'link-8');">CONSUMER</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-67', 'CONSUMER_SECRET', 'link-9');">CONSUMER_SECRET</a></tt><tt class="py-op">)</tt> </tt>
<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">Exception</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown authenticator setting: %s"</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR" class="py-name" href="#" onclick="return doclink('link-68', 'AUTHENTICATOR', 'link-13');">AUTHENTICATOR</a></tt><tt class="py-op">)</tt> </tt>
<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> </tt>
<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-name">connector</tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-69', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-70" class="py-name" targets="Class scapi.ApiConnector=scapi.ApiConnector-class.html"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-70', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-71', 'API_HOST', 'link-10');">API_HOST</a></tt><tt class="py-op">,</tt> </tt>
<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt class="py-name">authenticator</tt><tt class="py-op">)</tt> </tt>
<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> </tt>
<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt id="link-72" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-72', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"RootScope: %s authenticator: %s"</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-73', 'API_HOST', 'link-10');">API_HOST</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR" class="py-name" href="#" onclick="return doclink('link-74', 'AUTHENTICATOR', 'link-13');">AUTHENTICATOR</a></tt><tt class="py-op">)</tt> </tt>
<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-75" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-75', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Class scapi.Scope=scapi.Scope-class.html"><a title="scapi.Scope" class="py-name" href="#" onclick="return doclink('link-76', 'Scope', 'link-76');">Scope</a></tt><tt class="py-op">(</tt><tt class="py-name">connector</tt><tt class="py-op">)</tt> </tt>
</div><a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> </tt>
<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_connect"></a><div id="SCAPITests.test_connect-def"><a name="L158"></a><tt class="py-lineno">158</tt> <a class="py-toggle" href="#" id="SCAPITests.test_connect-toggle" onclick="return toggle('SCAPITests.test_connect');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_connect">test_connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_connect-expanded"><a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> test_connect</tt> </tt>
<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> Tries to connect &amp; performs some read-only operations.</tt> </tt>
<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.root=scapi.tests.scapi_tests.SCAPITests-class.html#root"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-77', 'root', 'link-77');">root</a></tt> </tt>
<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-comment"># quite_a_few_users = list(itertools.islice(sca.users(), 0, 127))</tt> </tt>
<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-comment"># logger.debug(quite_a_few_users)</tt> </tt>
<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># assert isinstance(quite_a_few_users, list) and isinstance(quite_a_few_users[0], scapi.User)</tt> </tt>
<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt id="link-78" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-78', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">,</tt> <tt id="link-79" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-79', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Class scapi.User=scapi.User-class.html"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-80', 'User', 'link-80');">User</a></tt><tt class="py-op">)</tt> </tt>
<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt>
<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">contacts</tt><tt class="py-op">:</tt> </tt>
<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-81" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-81', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-82', 'User', 'link-80');">User</a></tt><tt class="py-op">)</tt> </tt>
<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt id="link-83" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-83', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">)</tt> </tt>
<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt>
<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">tracks</tt><tt class="py-op">:</tt> </tt>
<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-84" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-84', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-85" class="py-name" targets="Class scapi.Track=scapi.Track-class.html"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-85', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt>
<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt id="link-86" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-86', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">)</tt> </tt>
</div><a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> </tt>
<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_access_token_acquisition"></a><div id="SCAPITests.test_access_token_acquisition-def"><a name="L184"></a><tt class="py-lineno">184</tt> <a class="py-toggle" href="#" id="SCAPITests.test_access_token_acquisition-toggle" onclick="return toggle('SCAPITests.test_access_token_acquisition');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_access_token_acquisition">test_access_token_acquisition</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_access_token_acquisition-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_access_token_acquisition-expanded"><a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"><tt class="py-docstring"> This test is commented out because it needs user-interaction.</tt> </tt>
<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.RUN_INTERACTIVE_TESTS
scapi.tests.test_connect.RUN_INTERACTIVE_TESTS" class="py-name" href="#" onclick="return doclink('link-87', 'RUN_INTERACTIVE_TESTS', 'link-14');">RUN_INTERACTIVE_TESTS</a></tt><tt class="py-op">:</tt> </tt>
<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">oauth_authenticator</tt> <tt class="py-op">=</tt> <tt id="link-88" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-88', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-89', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="scapi.authentication.OAuthAuthenticator" class="py-name" href="#" onclick="return doclink('link-90', 'OAuthAuthenticator', 'link-55');">OAuthAuthenticator</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-91', 'CONSUMER', 'link-8');">CONSUMER</a></tt><tt class="py-op">,</tt> </tt>
<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-92', 'CONSUMER_SECRET', 'link-9');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> </tt>
<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> </tt>
<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-93" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-93', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-94', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-95', 'API_HOST', 'link-10');">API_HOST</a></tt><tt class="py-op">,</tt> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt class="py-name">oauth_authenticator</tt><tt class="py-op">)</tt> </tt>
<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">secret</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Method scapi.ApiConnector.fetch_request_token()=scapi.ApiConnector-class.html#fetch_request_token"><a title="scapi.ApiConnector.fetch_request_token" class="py-name" href="#" onclick="return doclink('link-96', 'fetch_request_token', 'link-96');">fetch_request_token</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">authorization_url</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name" targets="Method scapi.ApiConnector.get_request_token_authorization_url()=scapi.ApiConnector-class.html#get_request_token_authorization_url"><a title="scapi.ApiConnector.get_request_token_authorization_url" class="py-name" href="#" onclick="return doclink('link-97', 'get_request_token_authorization_url', 'link-97');">get_request_token_authorization_url</a></tt><tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">)</tt> </tt>
<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-name">webbrowser</tt><tt class="py-op">.</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">authorization_url</tt><tt class="py-op">)</tt> </tt>
<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-name">oauth_verifier</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_input</tt><tt class="py-op">(</tt><tt class="py-string">"please enter verifier code as seen in the browser:"</tt><tt class="py-op">)</tt> </tt>
<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> </tt>
<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-name">oauth_authenticator</tt> <tt class="py-op">=</tt> <tt id="link-98" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-98', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-99', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="scapi.authentication.OAuthAuthenticator" class="py-name" href="#" onclick="return doclink('link-100', 'OAuthAuthenticator', 'link-55');">OAuthAuthenticator</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-101', 'CONSUMER', 'link-8');">CONSUMER</a></tt><tt class="py-op">,</tt> </tt>
<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-102', 'CONSUMER_SECRET', 'link-9');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> </tt>
<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-name">token</tt><tt class="py-op">,</tt> </tt>
<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-name">secret</tt><tt class="py-op">)</tt> </tt>
<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> </tt>
<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-103" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-103', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-104', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-105', 'API_HOST', 'link-10');">API_HOST</a></tt><tt class="py-op">,</tt> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt class="py-name">oauth_authenticator</tt><tt class="py-op">)</tt> </tt>
<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">secret</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name" targets="Method scapi.ApiConnector.fetch_access_token()=scapi.ApiConnector-class.html#fetch_access_token"><a title="scapi.ApiConnector.fetch_access_token" class="py-name" href="#" onclick="return doclink('link-106', 'fetch_access_token', 'link-106');">fetch_access_token</a></tt><tt class="py-op">(</tt><tt class="py-name">oauth_verifier</tt><tt class="py-op">)</tt> </tt>
<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt id="link-107" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-107', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Access token: '%s'"</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">)</tt> </tt>
<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt id="link-108" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-108', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Access token secret: '%s'"</tt><tt class="py-op">,</tt> <tt class="py-name">secret</tt><tt class="py-op">)</tt> </tt>
<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-comment"># force oauth-authentication with the new parameters, and</tt> </tt>
<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># then invoke some simple test</tt> </tt>
<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.AUTHENTICATOR" class="py-name" href="#" onclick="return doclink('link-109', 'AUTHENTICATOR', 'link-13');">AUTHENTICATOR</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"oauth"</tt> </tt>
<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN
scapi.tests.test_connect.TOKEN
scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-110', 'TOKEN', 'link-6');">TOKEN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">token</tt> </tt>
<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET
scapi.tests.test_connect.SECRET
scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-111', 'SECRET', 'link-7');">SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-name">secret</tt> </tt>
<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name" targets="Method scapi.tests.scapi_tests.SCAPITests.test_connect()=scapi.tests.scapi_tests.SCAPITests-class.html#test_connect,Module scapi.tests.test_connect=scapi.tests.test_connect-module.html,Function scapi.tests.test_connect.test_connect()=scapi.tests.test_connect-module.html#test_connect"><a title="scapi.tests.scapi_tests.SCAPITests.test_connect
scapi.tests.test_connect
scapi.tests.test_connect.test_connect" class="py-name" href="#" onclick="return doclink('link-112', 'test_connect', 'link-112');">test_connect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> </tt>
<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_track_creation"></a><div id="SCAPITests.test_track_creation-def"><a name="L218"></a><tt class="py-lineno">218</tt> <a class="py-toggle" href="#" id="SCAPITests.test_track_creation-toggle" onclick="return toggle('SCAPITests.test_track_creation');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation">test_track_creation</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_track_creation-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_track_creation-expanded"><a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-113', 'root', 'link-77');">root</a></tt> </tt>
<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-114', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-115" class="py-name" targets="Class Method scapi.RESTBase.new()=scapi.RESTBase-class.html#new"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-115', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-116" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-116', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-117', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> </tt>
<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_track_update"></a><div id="SCAPITests.test_track_update-def"><a name="L224"></a><tt class="py-lineno">224</tt> <a class="py-toggle" href="#" id="SCAPITests.test_track_update-toggle" onclick="return toggle('SCAPITests.test_track_update');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_update">test_track_update</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_track_update-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_track_update-expanded"><a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-118', 'root', 'link-77');">root</a></tt> </tt>
<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-119', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-120', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-121" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-121', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-122', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt>
<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'baz'</tt> </tt>
<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-123', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-124', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">)</tt> </tt>
<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">title</tt> <tt class="py-op">==</tt> <tt class="py-string">"baz"</tt> </tt>
</div><a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> </tt>
<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_scoped_track_creation"></a><div id="SCAPITests.test_scoped_track_creation-def"><a name="L233"></a><tt class="py-lineno">233</tt> <a class="py-toggle" href="#" id="SCAPITests.test_scoped_track_creation-toggle" onclick="return toggle('SCAPITests.test_scoped_track_creation');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_scoped_track_creation">test_scoped_track_creation</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_scoped_track_creation-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_scoped_track_creation-expanded"><a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-125', 'root', 'link-77');">root</a></tt> </tt>
<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-126', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">"bar"</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-127" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-127', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-128', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> </tt>
<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_upload"></a><div id="SCAPITests.test_upload-def"><a name="L240"></a><tt class="py-lineno">240</tt> <a class="py-toggle" href="#" id="SCAPITests.test_upload-toggle" onclick="return toggle('SCAPITests.test_upload');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_upload">test_upload</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_upload-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_upload-expanded"><a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-129', 'root', 'link-77');">root</a></tt> </tt>
<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-130', 'root', 'link-77');">root</a></tt> </tt>
<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-131', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-132', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-133" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-133', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-134', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> </tt>
<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_contact_list"></a><div id="SCAPITests.test_contact_list-def"><a name="L247"></a><tt class="py-lineno">247</tt> <a class="py-toggle" href="#" id="SCAPITests.test_contact_list-toggle" onclick="return toggle('SCAPITests.test_contact_list');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_contact_list">test_contact_list</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_contact_list-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_contact_list-expanded"><a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-135', 'root', 'link-77');">root</a></tt> </tt>
<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt>
<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">contacts</tt><tt class="py-op">:</tt> </tt>
<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-136" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-136', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-137', 'User', 'link-80');">User</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> </tt>
<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_permissions"></a><div id="SCAPITests.test_permissions-def"><a name="L256"></a><tt class="py-lineno">256</tt> <a class="py-toggle" href="#" id="SCAPITests.test_permissions-toggle" onclick="return toggle('SCAPITests.test_permissions');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_permissions">test_permissions</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_permissions-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_permissions-expanded"><a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-138', 'root', 'link-77');">root</a></tt> </tt>
<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">islice</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">track</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tracks</tt><tt class="py-op">:</tt> </tt>
<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-name">permissions</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">permissions</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt id="link-139" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-139', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">permissions</tt><tt class="py-op">)</tt> </tt>
<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">permissions</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt>
<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">permissions</tt><tt class="py-op">:</tt> </tt>
<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">permissions</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-140" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-140', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-141', 'User', 'link-80');">User</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> </tt>
<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_setting_permissions"></a><div id="SCAPITests.test_setting_permissions-def"><a name="L268"></a><tt class="py-lineno">268</tt> <a class="py-toggle" href="#" id="SCAPITests.test_setting_permissions-toggle" onclick="return toggle('SCAPITests.test_setting_permissions');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_permissions">test_setting_permissions</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_setting_permissions-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_setting_permissions-expanded"><a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-142', 'root', 'link-77');">root</a></tt> </tt>
<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-143', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-144', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">sharing</tt><tt class="py-op">=</tt><tt class="py-string">"private"</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">sharing</tt> <tt class="py-op">==</tt> <tt class="py-string">"private"</tt> </tt>
<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-name">users</tt> <tt class="py-op">=</tt> <tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">islice</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">users</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">10</tt><tt class="py-op">)</tt> </tt>
<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-name">users_to_set</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">user</tt> <tt class="py-keyword">for</tt> <tt class="py-name">user</tt> <tt class="py-keyword">in</tt> <tt class="py-name">users</tt> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-op">!=</tt> <tt class="py-name">me</tt><tt class="py-op">]</tt> </tt>
<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">users_to_set</tt><tt class="py-op">,</tt> <tt class="py-string">"Didn't find any suitable users"</tt> </tt>
<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">permissions</tt> <tt class="py-op">=</tt> <tt class="py-name">users_to_set</tt> </tt>
<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">permissions</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">users_to_set</tt><tt class="py-op">)</tt> </tt>
</div><a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> </tt>
<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_setting_comments"></a><div id="SCAPITests.test_setting_comments-def"><a name="L280"></a><tt class="py-lineno">280</tt> <a class="py-toggle" href="#" id="SCAPITests.test_setting_comments-toggle" onclick="return toggle('SCAPITests.test_setting_comments');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_comments">test_setting_comments</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_setting_comments-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_setting_comments-expanded"><a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-145', 'root', 'link-77');">root</a></tt> </tt>
<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-146', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-147', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">sharing</tt><tt class="py-op">=</tt><tt class="py-string">"private"</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">comment</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name" targets="Class scapi.Comment=scapi.Comment-class.html"><a title="scapi.Comment" class="py-name" href="#" onclick="return doclink('link-148', 'Comment', 'link-148');">Comment</a></tt><tt class="py-op">.</tt><tt id="link-149" class="py-name" targets="Class Method scapi.RESTBase.create()=scapi.RESTBase-class.html#create"><a title="scapi.RESTBase.create" class="py-name" href="#" onclick="return doclink('link-149', 'create', 'link-149');">create</a></tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-string">"This is the body of my comment"</tt><tt class="py-op">,</tt> <tt class="py-name">timestamp</tt><tt class="py-op">=</tt><tt class="py-number">10</tt><tt class="py-op">)</tt> </tt>
<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">comments</tt> <tt class="py-op">=</tt> <tt class="py-name">comment</tt> </tt>
<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">comments</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name" targets="Method scapi.json._StringGenerator.next()=scapi.json._StringGenerator-class.html#next"><a title="scapi.json._StringGenerator.next" class="py-name" href="#" onclick="return doclink('link-150', 'next', 'link-150');">next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">==</tt> <tt class="py-name">comment</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> </tt>
</div><a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> </tt>
<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_setting_comments_the_way_shawn_says_its_correct"></a><div id="SCAPITests.test_setting_comments_the_way_shawn_says_its_correct-def"><a name="L289"></a><tt class="py-lineno">289</tt> <a class="py-toggle" href="#" id="SCAPITests.test_setting_comments_the_way_shawn_says_its_correct-toggle" onclick="return toggle('SCAPITests.test_setting_comments_the_way_shawn_says_its_correct');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_setting_comments_the_way_shawn_says_its_correct">test_setting_comments_the_way_shawn_says_its_correct</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_setting_comments_the_way_shawn_says_its_correct-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_setting_comments_the_way_shawn_says_its_correct-expanded"><a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-151', 'root', 'link-77');">root</a></tt> </tt>
<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-152', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-153', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">sharing</tt><tt class="py-op">=</tt><tt class="py-string">"private"</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-name">cbody</tt> <tt class="py-op">=</tt> <tt class="py-string">"This is the body of my comment"</tt> </tt>
<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">comments</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-154', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">cbody</tt><tt class="py-op">,</tt> <tt class="py-name">timestamp</tt><tt class="py-op">=</tt><tt class="py-number">10</tt><tt class="py-op">)</tt> </tt>
<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">comments</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">==</tt> <tt class="py-name">cbody</tt> </tt>
</div><a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> </tt>
<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_contact_add_and_removal"></a><div id="SCAPITests.test_contact_add_and_removal-def"><a name="L297"></a><tt class="py-lineno">297</tt> <a class="py-toggle" href="#" id="SCAPITests.test_contact_add_and_removal-toggle" onclick="return toggle('SCAPITests.test_contact_add_and_removal');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_contact_add_and_removal">test_contact_add_and_removal</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_contact_add_and_removal-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_contact_add_and_removal-expanded"><a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-155', 'root', 'link-77');">root</a></tt> </tt>
<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">user</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">users</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-op">!=</tt> <tt class="py-name">me</tt><tt class="py-op">:</tt> </tt>
<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-name">user_to_set</tt> <tt class="py-op">=</tt> <tt class="py-name">user</tt> </tt>
<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> </tt>
<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user_to_set</tt> <tt class="py-keyword">in</tt> <tt class="py-name">contacts</tt><tt class="py-op">:</tt> </tt>
<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">user_to_set</tt><tt class="py-op">)</tt> </tt>
<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> </tt>
<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">user_to_set</tt><tt class="py-op">)</tt> </tt>
<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> </tt>
<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">user_to_set</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">contacts</tt><tt class="py-op">]</tt> </tt>
<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> </tt>
<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">user_to_set</tt><tt class="py-op">)</tt> </tt>
<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> </tt>
<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">user_to_set</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">contacts</tt> </tt>
</div><a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> </tt>
<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_favorites"></a><div id="SCAPITests.test_favorites-def"><a name="L320"></a><tt class="py-lineno">320</tt> <a class="py-toggle" href="#" id="SCAPITests.test_favorites-toggle" onclick="return toggle('SCAPITests.test_favorites');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_favorites">test_favorites</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_favorites-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_favorites-expanded"><a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-156', 'root', 'link-77');">root</a></tt> </tt>
<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> </tt>
<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-name">favorites</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">favorites</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">favorites</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-157" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-157', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-158', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt>
<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> </tt>
<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">user</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">users</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-op">==</tt> <tt class="py-name">me</tt><tt class="py-op">:</tt> </tt>
<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt>
<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">track</tt> <tt class="py-keyword">in</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">track</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> </tt>
<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">)</tt> </tt>
<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> </tt>
<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-name">favorites</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt> <tt class="py-keyword">in</tt> <tt class="py-name">favorites</tt> </tt>
<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> </tt>
<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">)</tt> </tt>
<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> </tt>
<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-name">favorites</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">favorites</tt> </tt>
</div><a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> </tt>
<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_large_list"></a><div id="SCAPITests.test_large_list-def"><a name="L347"></a><tt class="py-lineno">347</tt> <a class="py-toggle" href="#" id="SCAPITests.test_large_list-toggle" onclick="return toggle('SCAPITests.test_large_list');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_large_list">test_large_list</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_large_list-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_large_list-expanded"><a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-159', 'root', 'link-77');">root</a></tt> </tt>
<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> </tt>
<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt id="link-160" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-160', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-161', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-162" class="py-name" targets="Variable scapi.ApiConnector.LIST_LIMIT=scapi.ApiConnector-class.html#LIST_LIMIT"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-162', 'LIST_LIMIT', 'link-162');">LIST_LIMIT</a></tt><tt class="py-op">:</tt> </tt>
<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt id="link-163" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-163', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-164', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-165', 'LIST_LIMIT', 'link-162');">LIST_LIMIT</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-166', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-167', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'test_track_%i'</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-name">all_tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt>
<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-name">all_tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">)</tt> </tt>
<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt id="link-168" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-168', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-169', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-170', 'LIST_LIMIT', 'link-162');">LIST_LIMIT</a></tt> </tt>
</div><a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> </tt>
<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> </tt>
<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_filtered_list"></a><div id="SCAPITests.test_filtered_list-def"><a name="L361"></a><tt class="py-lineno">361</tt> <a class="py-toggle" href="#" id="SCAPITests.test_filtered_list-toggle" onclick="return toggle('SCAPITests.test_filtered_list');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_filtered_list">test_filtered_list</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_filtered_list-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_filtered_list-expanded"><a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-171', 'root', 'link-77');">root</a></tt> </tt>
<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> </tt>
<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-name">params</tt><tt class="py-op">=</tt><tt class="py-op">{</tt> </tt>
<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-string">"bpm[from]"</tt> <tt class="py-op">:</tt> <tt class="py-string">"180"</tt><tt class="py-op">,</tt> </tt>
<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt id="link-172" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-172', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-173', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-174', 'LIST_LIMIT', 'link-162');">LIST_LIMIT</a></tt><tt class="py-op">:</tt> </tt>
<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt id="link-175" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-175', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-176', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-177', 'LIST_LIMIT', 'link-162');">LIST_LIMIT</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-178', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-179', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'test_track_%i'</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-name">all_tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt>
<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-name">all_tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">)</tt> </tt>
<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt id="link-180" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-180', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-181', 'ApiConnector', 'link-70');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-182', 'LIST_LIMIT', 'link-162');">LIST_LIMIT</a></tt> </tt>
</div><a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> </tt>
<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_events"></a><div id="SCAPITests.test_events-def"><a name="L376"></a><tt class="py-lineno">376</tt> <a class="py-toggle" href="#" id="SCAPITests.test_events-toggle" onclick="return toggle('SCAPITests.test_events');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_events">test_events</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_events-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_events-expanded"><a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-183', 'root', 'link-77');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">events</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt>
<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-184" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-184', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-185" class="py-name" targets="Class scapi.Event=scapi.Event-class.html"><a title="scapi.Event" class="py-name" href="#" onclick="return doclink('link-185', 'Event', 'link-185');">Event</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> </tt>
<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_me_having_stress"></a><div id="SCAPITests.test_me_having_stress-def"><a name="L382"></a><tt class="py-lineno">382</tt> <a class="py-toggle" href="#" id="SCAPITests.test_me_having_stress-toggle" onclick="return toggle('SCAPITests.test_me_having_stress');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_me_having_stress">test_me_having_stress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_me_having_stress-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_me_having_stress-expanded"><a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-186', 'root', 'link-77');">root</a></tt> </tt>
<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">_</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt class="py-number">20</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name" targets="Method scapi.tests.scapi_tests.SCAPITests.setUp()=scapi.tests.scapi_tests.SCAPITests-class.html#setUp"><a title="scapi.tests.scapi_tests.SCAPITests.setUp" class="py-name" href="#" onclick="return doclink('link-187', 'setUp', 'link-187');">setUp</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> </tt>
<a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_non_global_api"></a><div id="SCAPITests.test_non_global_api-def"><a name="L389"></a><tt class="py-lineno">389</tt> <a class="py-toggle" href="#" id="SCAPITests.test_non_global_api-toggle" onclick="return toggle('SCAPITests.test_non_global_api');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_non_global_api">test_non_global_api</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_non_global_api-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_non_global_api-expanded"><a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt id="link-188" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-188', 'root', 'link-77');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-189', 'root', 'link-77');">root</a></tt> </tt>
<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt id="link-190" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-190', 'root', 'link-77');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">,</tt> <tt id="link-191" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-191', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-192', 'User', 'link-80');">User</a></tt><tt class="py-op">)</tt> </tt>
<a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> </tt>
<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> <tt class="py-comment"># now get something *from* that user</tt> </tt>
<a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"> </tt>
<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_playlists"></a><div id="SCAPITests.test_playlists-def"><a name="L398"></a><tt class="py-lineno">398</tt> <a class="py-toggle" href="#" id="SCAPITests.test_playlists-toggle" onclick="return toggle('SCAPITests.test_playlists');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_playlists">test_playlists</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_playlists-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_playlists-expanded"><a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-193', 'root', 'link-77');">root</a></tt> </tt>
<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"> <tt class="py-name">playlists</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">islice</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">playlists</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">127</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">playlist</tt> <tt class="py-keyword">in</tt> <tt class="py-name">playlists</tt><tt class="py-op">:</tt> </tt>
<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">playlist</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt> </tt>
<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">tracks</tt><tt class="py-op">]</tt> </tt>
<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">trackdata</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tracks</tt><tt class="py-op">:</tt> </tt>
<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-name">trackdata</tt> </tt>
<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> <tt class="py-comment">#user = trackdata.user</tt> </tt>
<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment">#print user</tt> </tt>
<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment">#print user.tracks()</tt> </tt>
<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">print</tt> <tt class="py-name">playlist</tt><tt class="py-op">.</tt><tt class="py-name">user</tt> </tt>
<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
</div><a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> </tt>
<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> </tt>
<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> </tt>
<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_playlist_creation"></a><div id="SCAPITests.test_playlist_creation-def"><a name="L416"></a><tt class="py-lineno">416</tt> <a class="py-toggle" href="#" id="SCAPITests.test_playlist_creation-toggle" onclick="return toggle('SCAPITests.test_playlist_creation');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_playlist_creation">test_playlist_creation</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_playlist_creation-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_playlist_creation-expanded"><a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-194', 'root', 'link-77');">root</a></tt> </tt>
<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name" targets="Class scapi.Playlist=scapi.Playlist-class.html"><a title="scapi.Playlist" class="py-name" href="#" onclick="return doclink('link-195', 'Playlist', 'link-195');">Playlist</a></tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-196', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">"I'm so happy, happy, happy, happy!"</tt><tt class="py-op">)</tt> </tt>
</div><a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> </tt>
<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> </tt>
<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_groups"></a><div id="SCAPITests.test_groups-def"><a name="L422"></a><tt class="py-lineno">422</tt> <a class="py-toggle" href="#" id="SCAPITests.test_groups-toggle" onclick="return toggle('SCAPITests.test_groups');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_groups">test_groups</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_groups-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_groups-expanded"><a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-197', 'root', 'link-77');">root</a></tt> </tt>
<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-name">groups</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">islice</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">groups</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">127</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">group</tt> <tt class="py-keyword">in</tt> <tt class="py-name">groups</tt><tt class="py-op">:</tt> </tt>
<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-name">users</tt> <tt class="py-op">=</tt> <tt class="py-name">group</tt><tt class="py-op">.</tt><tt class="py-name">users</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">user</tt> <tt class="py-keyword">in</tt> <tt class="py-name">users</tt><tt class="py-op">:</tt> </tt>
<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
</div><a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> </tt>
<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_track_creation_with_email_sharers"></a><div id="SCAPITests.test_track_creation_with_email_sharers-def"><a name="L431"></a><tt class="py-lineno">431</tt> <a class="py-toggle" href="#" id="SCAPITests.test_track_creation_with_email_sharers-toggle" onclick="return toggle('SCAPITests.test_track_creation_with_email_sharers');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_email_sharers">test_track_creation_with_email_sharers</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_track_creation_with_email_sharers-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_track_creation_with_email_sharers-expanded"><a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-198', 'root', 'link-77');">root</a></tt> </tt>
<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> <tt class="py-name">emails</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">address</tt><tt class="py-op">=</tt><tt class="py-string">"deets@web.de"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">address</tt><tt class="py-op">=</tt><tt class="py-string">"hannes@soundcloud.com"</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-199', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-200', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> </tt>
<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-name">shared_to</tt><tt class="py-op">=</tt><tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">emails</tt><tt class="py-op">=</tt><tt class="py-name">emails</tt><tt class="py-op">)</tt> </tt>
<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt>
<a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-201" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-201', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-202', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> </tt>
<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> </tt>
<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_track_creation_with_artwork"></a><div id="SCAPITests.test_track_creation_with_artwork-def"><a name="L441"></a><tt class="py-lineno">441</tt> <a class="py-toggle" href="#" id="SCAPITests.test_track_creation_with_artwork-toggle" onclick="return toggle('SCAPITests.test_track_creation_with_artwork');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_artwork">test_track_creation_with_artwork</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_track_creation_with_artwork-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_track_creation_with_artwork-expanded"><a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-203', 'root', 'link-77');">root</a></tt> </tt>
<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-204', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-205" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-205', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> </tt>
<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> </tt>
<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> <tt class="py-name">artwork_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">artwork_data</tt><tt class="py-op">,</tt> </tt>
<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt>
<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-206" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-206', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-207" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-207', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt>
<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> </tt>
<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">title</tt> <tt class="py-op">=</tt> <tt class="py-string">"foobarbaz"</tt> </tt>
</div><a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> </tt>
<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> </tt>
<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_oauth_get_signing"></a><div id="SCAPITests.test_oauth_get_signing-def"><a name="L453"></a><tt class="py-lineno">453</tt> <a class="py-toggle" href="#" id="SCAPITests.test_oauth_get_signing-toggle" onclick="return toggle('SCAPITests.test_oauth_get_signing');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_oauth_get_signing">test_oauth_get_signing</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_oauth_get_signing-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_oauth_get_signing-expanded"><a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-208', 'root', 'link-77');">root</a></tt> </tt>
<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> </tt>
<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-string">"http://api.soundcloud.dev/oauth/test_request"</tt> </tt>
<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">foo</tt><tt class="py-op">=</tt><tt class="py-string">"bar"</tt><tt class="py-op">,</tt> </tt>
<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> <tt class="py-name">baz</tt><tt class="py-op">=</tt><tt class="py-string">"padamm"</tt><tt class="py-op">,</tt> </tt>
<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt>
<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">+=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name" targets="Method scapi.Scope._create_query_string()=scapi.Scope-class.html#_create_query_string"><a title="scapi.Scope._create_query_string" class="py-name" href="#" onclick="return doclink('link-209', '_create_query_string', 'link-209');">_create_query_string</a></tt><tt class="py-op">(</tt><tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-name">signed_url</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name" targets="Method scapi.Scope.oauth_sign_get_request()=scapi.Scope-class.html#oauth_sign_get_request"><a title="scapi.Scope.oauth_sign_get_request" class="py-name" href="#" onclick="return doclink('link-210', 'oauth_sign_get_request', 'link-210');">oauth_sign_get_request</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> </tt>
<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"> </tt>
<a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib2</tt><tt class="py-op">.</tt><tt class="py-name">urlopen</tt><tt class="py-op">(</tt><tt class="py-name">signed_url</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name" targets="Method scapi.json.JsonReader.read()=scapi.json.JsonReader-class.html#read,Function scapi.json.read()=scapi.json-module.html#read"><a title="scapi.json.JsonReader.read
scapi.json.read" class="py-name" href="#" onclick="return doclink('link-211', 'read', 'link-211');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-string">"oauth_nonce"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">res</tt> </tt>
</div><a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> </tt>
<a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_streaming"></a><div id="SCAPITests.test_streaming-def"><a name="L468"></a><tt class="py-lineno">468</tt> <a class="py-toggle" href="#" id="SCAPITests.test_streaming-toggle" onclick="return toggle('SCAPITests.test_streaming');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_streaming">test_streaming</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_streaming-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_streaming-expanded"><a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-212', 'root', 'link-77');">root</a></tt> </tt>
<a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"> </tt>
<a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-name">params</tt><tt class="py-op">=</tt><tt class="py-op">{</tt> </tt>
<a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"> <tt class="py-string">"filter"</tt> <tt class="py-op">:</tt> <tt class="py-string">"streamable"</tt><tt class="py-op">,</tt> </tt>
<a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="scapi.json._StringGenerator.next" class="py-name" href="#" onclick="return doclink('link-213', 'next', 'link-150');">next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> </tt>
<a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> </tt>
<a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-214" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-214', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-215', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt>
<a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> </tt>
<a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"> <tt class="py-name">stream_url</tt> <tt class="py-op">=</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">stream_url</tt> </tt>
<a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"> </tt>
<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"> <tt class="py-name">signed_url</tt> <tt class="py-op">=</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="scapi.Scope.oauth_sign_get_request" class="py-name" href="#" onclick="return doclink('link-216', 'oauth_sign_get_request', 'link-210');">oauth_sign_get_request</a></tt><tt class="py-op">(</tt><tt class="py-name">stream_url</tt><tt class="py-op">)</tt> </tt>
</div><a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"> </tt>
<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_downloadable"></a><div id="SCAPITests.test_downloadable-def"><a name="L483"></a><tt class="py-lineno">483</tt> <a class="py-toggle" href="#" id="SCAPITests.test_downloadable-toggle" onclick="return toggle('SCAPITests.test_downloadable');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_downloadable">test_downloadable</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_downloadable-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_downloadable-expanded"><a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-217', 'root', 'link-77');">root</a></tt> </tt>
<a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> </tt>
<a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-name">params</tt><tt class="py-op">=</tt><tt class="py-op">{</tt> </tt>
<a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"> <tt class="py-string">"filter"</tt> <tt class="py-op">:</tt> <tt class="py-string">"downloadable"</tt><tt class="py-op">,</tt> </tt>
<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"> <tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="scapi.json._StringGenerator.next" class="py-name" href="#" onclick="return doclink('link-218', 'next', 'link-150');">next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"> </tt>
<a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"> </tt>
<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-219" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-219', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-220', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt>
<a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"> </tt>
<a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"> <tt class="py-name">download_url</tt> <tt class="py-op">=</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">download_url</tt> </tt>
<a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"> </tt>
<a name="L495"></a><tt class="py-lineno">495</tt> <tt class="py-line"> <tt class="py-name">signed_url</tt> <tt class="py-op">=</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="scapi.Scope.oauth_sign_get_request" class="py-name" href="#" onclick="return doclink('link-221', 'oauth_sign_get_request', 'link-210');">oauth_sign_get_request</a></tt><tt class="py-op">(</tt><tt class="py-name">download_url</tt><tt class="py-op">)</tt> </tt>
<a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"> </tt>
<a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib2</tt><tt class="py-op">.</tt><tt class="py-name">urlopen</tt><tt class="py-op">(</tt><tt class="py-name">signed_url</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="scapi.json.JsonReader.read
scapi.json.read" class="py-name" href="#" onclick="return doclink('link-222', 'read', 'link-211');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">data</tt> </tt>
</div><a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"> </tt>
<a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"> </tt>
<a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_modifying_playlists"></a><div id="SCAPITests.test_modifying_playlists-def"><a name="L502"></a><tt class="py-lineno">502</tt> <a class="py-toggle" href="#" id="SCAPITests.test_modifying_playlists-toggle" onclick="return toggle('SCAPITests.test_modifying_playlists');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_modifying_playlists">test_modifying_playlists</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_modifying_playlists-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_modifying_playlists-expanded"><a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-223', 'root', 'link-77');">root</a></tt> </tt>
<a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"> </tt>
<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"> <tt class="py-name">my_tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"> </tt>
<a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">my_tracks</tt> </tt>
<a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"> </tt>
<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"> <tt class="py-name">playlist</tt> <tt class="py-op">=</tt> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">playlists</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="scapi.json._StringGenerator.next" class="py-name" href="#" onclick="return doclink('link-224', 'next', 'link-150');">next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"> <tt class="py-name">playlist</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="scapi.Playlist" class="py-name" href="#" onclick="return doclink('link-225', 'Playlist', 'link-195');">Playlist</a></tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-226', 'get', 'link-20');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">playlist</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">)</tt> </tt>
<a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"> </tt>
<a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">playlist</tt><tt class="py-op">,</tt> <tt id="link-227" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-227', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-228" class="py-name"><a title="scapi.Playlist" class="py-name" href="#" onclick="return doclink('link-228', 'Playlist', 'link-195');">Playlist</a></tt><tt class="py-op">)</tt> </tt>
<a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"> </tt>
<a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"> <tt class="py-name">pl_tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">playlist</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt> </tt>
<a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"> </tt>
<a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"> <tt class="py-name">playlist</tt><tt class="py-op">.</tt><tt class="py-name">title</tt> <tt class="py-op">=</tt> <tt class="py-string">"foobarbaz"</tt> </tt>
</div><a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"> </tt>
<a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"> </tt>
<a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_track_deletion"></a><div id="SCAPITests.test_track_deletion-def"><a name="L521"></a><tt class="py-lineno">521</tt> <a class="py-toggle" href="#" id="SCAPITests.test_track_deletion-toggle" onclick="return toggle('SCAPITests.test_track_deletion');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_deletion">test_track_deletion</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_track_deletion-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_track_deletion-expanded"><a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-229', 'root', 'link-77');">root</a></tt> </tt>
<a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-230" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-230', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-231', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> </tt>
<a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt>
<a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"> </tt>
<a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">)</tt> </tt>
</div><a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"> </tt>
<a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"> </tt>
<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"> </tt>
<a name="SCAPITests.test_track_creation_with_updated_artwork"></a><div id="SCAPITests.test_track_creation_with_updated_artwork-def"><a name="L530"></a><tt class="py-lineno">530</tt> <a class="py-toggle" href="#" id="SCAPITests.test_track_creation_with_updated_artwork-toggle" onclick="return toggle('SCAPITests.test_track_creation_with_updated_artwork');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation_with_updated_artwork">test_track_creation_with_updated_artwork</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SCAPITests.test_track_creation_with_updated_artwork-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SCAPITests.test_track_creation_with_updated_artwork-expanded"><a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-232" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-232', 'root', 'link-77');">root</a></tt> </tt>
<a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-233', 'Track', 'link-85');">Track</a></tt><tt class="py-op">.</tt><tt id="link-234" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-234', 'new', 'link-115');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> </tt>
<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"> <tt class="py-name">asset_data</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> </tt>
<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt>
<a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-235" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-235', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-236', 'Track', 'link-85');">Track</a></tt><tt class="py-op">)</tt> </tt>
<a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"> </tt>
<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">artwork_data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">artwork_data</tt> </tt>
</div></div><a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
</script>
</pre>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,586 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.tests.test_connect</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
<a href="scapi.tests-module.html">Package&nbsp;tests</a> ::
Module&nbsp;test_connect
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.tests.test_connect-module.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== MODULE DESCRIPTION ==================== -->
<h1 class="epydoc">Module test_connect</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.tests.test_connect-pysrc.html">source&nbsp;code</a></span></p>
<!-- ==================== FUNCTIONS ==================== -->
<a name="section-Functions"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Functions</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Functions"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="setup"></a><span class="summary-sig-name">setup</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#setup">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="load_config"></a><span class="summary-sig-name">load_config</span>(<span class="summary-sig-arg">config_name</span>=<span class="summary-sig-default">None</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#load_config">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_load_config"></a><span class="summary-sig-name">test_load_config</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_load_config">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_connect"></a><span class="summary-sig-name">test_connect</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_connect">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_access_token_acquisition"></a><span class="summary-sig-name">test_access_token_acquisition</span>()</span><br />
This test is commented out because it needs user-interaction.</td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_access_token_acquisition">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_track_creation"></a><span class="summary-sig-name">test_track_creation</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_track_creation">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_track_update"></a><span class="summary-sig-name">test_track_update</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_track_update">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_scoped_track_creation"></a><span class="summary-sig-name">test_scoped_track_creation</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_scoped_track_creation">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_upload"></a><span class="summary-sig-name">test_upload</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_upload">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_contact_list"></a><span class="summary-sig-name">test_contact_list</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_contact_list">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_permissions"></a><span class="summary-sig-name">test_permissions</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_permissions">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_setting_permissions"></a><span class="summary-sig-name">test_setting_permissions</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_setting_permissions">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_setting_comments"></a><span class="summary-sig-name">test_setting_comments</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_setting_comments">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_setting_comments_the_way_shawn_says_its_correct"></a><span class="summary-sig-name">test_setting_comments_the_way_shawn_says_its_correct</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_setting_comments_the_way_shawn_says_its_correct">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_contact_add_and_removal"></a><span class="summary-sig-name">test_contact_add_and_removal</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_contact_add_and_removal">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_favorites"></a><span class="summary-sig-name">test_favorites</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_favorites">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_large_list"></a><span class="summary-sig-name">test_large_list</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_large_list">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_events"></a><span class="summary-sig-name">test_events</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_events">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_me_having_stress"></a><span class="summary-sig-name">test_me_having_stress</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_me_having_stress">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_non_global_api"></a><span class="summary-sig-name">test_non_global_api</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_non_global_api">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_playlists"></a><span class="summary-sig-name">test_playlists</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_connect-pysrc.html#test_playlists">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!-- ==================== VARIABLES ==================== -->
<a name="section-Variables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Variables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(__name__)">logging.getLogger(__name__)</code>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="_logger"></a><span class="summary-name">_logger</span> = <code title="logging.getLogger(&quot;scapi&quot;)">logging.getLogger(&quot;scapi&quot;)</code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="RUN_INTERACTIVE_TESTS"></a><span class="summary-name">RUN_INTERACTIVE_TESTS</span> = <code title="False">False</code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="USE_OAUTH"></a><span class="summary-name">USE_OAUTH</span> = <code title="True">True</code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="TOKEN"></a><span class="summary-name">TOKEN</span> = <code title="'FjNE9aRTg8kpxuOjzwsX8Q'"><code class="variable-quote">'</code><code class="variable-string">FjNE9aRTg8kpxuOjzwsX8Q</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="SECRET"></a><span class="summary-name">SECRET</span> = <code title="'NP5PGoyKcQv64E0aZgV4CRNzHfPwR4QghrWoqEgEE'"><code class="variable-quote">'</code><code class="variable-string">NP5PGoyKcQv64E0aZgV4CRNzHfPwR4QghrWoqEgEE</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="CONSUMER"></a><span class="summary-name">CONSUMER</span> = <code title="'EEi2URUfM97pAAxHTogDpQ'"><code class="variable-quote">'</code><code class="variable-string">EEi2URUfM97pAAxHTogDpQ</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="CONSUMER_SECRET"></a><span class="summary-name">CONSUMER_SECRET</span> = <code title="'NFYd8T3i4jVKGZ9TMy9LHaBQB3Sh8V5sxBiMeMZBow'"><code class="variable-quote">'</code><code class="variable-string">NFYd8T3i4jVKGZ9TMy9LHaBQB3Sh8V5sxBiMeMZBow</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="API_HOST"></a><span class="summary-name">API_HOST</span> = <code title="'api.soundcloud.dev:3000'"><code class="variable-quote">'</code><code class="variable-string">api.soundcloud.dev:3000</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="USER"></a><span class="summary-name">USER</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="PASSWORD"></a><span class="summary-name">PASSWORD</span> = <code title="''"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="CONFIG_NAME"></a><span class="summary-name">CONFIG_NAME</span> = <code title="'soundcloud.cfg'"><code class="variable-quote">'</code><code class="variable-string">soundcloud.cfg</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="CONNECTOR"></a><span class="summary-name">CONNECTOR</span> = <code title="None">None</code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="ROOT"></a><span class="summary-name">ROOT</span> = <code title="None">None</code>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,627 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.tests.test_connect</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
<a href="scapi.tests-module.html">Package&nbsp;tests</a> ::
Module&nbsp;test_connect
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.tests.test_connect-pysrc.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<h1 class="epydoc">Source Code for <a href="scapi.tests.test_connect-module.html">Module scapi.tests.test_connect</a></h1>
<pre class="py-src">
<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">__future__</tt> <tt class="py-keyword">import</tt> <tt class="py-name">with_statement</tt> </tt>
<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">tempfile</tt> </tt>
<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">itertools</tt> </tt>
<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">ConfigParser</tt> <tt class="py-keyword">import</tt> <tt class="py-name">SafeConfigParser</tt> </tt>
<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pkg_resources</tt> </tt>
<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package scapi=scapi-module.html"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-0', 'scapi', 'link-0');">scapi</a></tt> </tt>
<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-1', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module scapi.authentication=scapi.authentication-module.html"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-2', 'authentication', 'link-2');">authentication</a></tt> </tt>
<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">webbrowser</tt> </tt>
<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"> </tt>
<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable scapi.authentication.logger=scapi.authentication-module.html#logger,Variable scapi.logger=scapi-module.html#logger,Variable scapi.tests.scapi_tests.logger=scapi.tests.scapi_tests-module.html#logger,Variable scapi.tests.test_connect.logger=scapi.tests.test_connect-module.html#logger,Variable scapi.tests.test_oauth.logger=scapi.tests.test_oauth-module.html#logger"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-3', 'logger', 'link-3');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt id="link-4" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-4', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">DEBUG</tt><tt class="py-op">)</tt> </tt>
<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable scapi.tests.test_connect._logger=scapi.tests.test_connect-module.html#_logger,Variable scapi.tests.test_oauth._logger=scapi.tests.test_oauth-module.html#_logger"><a title="scapi.tests.test_connect._logger
scapi.tests.test_oauth._logger" class="py-name" href="#" onclick="return doclink('link-5', '_logger', 'link-5');">_logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">"scapi"</tt><tt class="py-op">)</tt> </tt>
<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment">#_logger.setLevel(logging.DEBUG)</tt> </tt>
<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.RUN_INTERACTIVE_TESTS=scapi.tests.scapi_tests.SCAPITests-class.html#RUN_INTERACTIVE_TESTS,Variable scapi.tests.test_connect.RUN_INTERACTIVE_TESTS=scapi.tests.test_connect-module.html#RUN_INTERACTIVE_TESTS"><a title="scapi.tests.scapi_tests.SCAPITests.RUN_INTERACTIVE_TESTS
scapi.tests.test_connect.RUN_INTERACTIVE_TESTS" class="py-name" href="#" onclick="return doclink('link-6', 'RUN_INTERACTIVE_TESTS', 'link-6');">RUN_INTERACTIVE_TESTS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable scapi.tests.test_connect.USE_OAUTH=scapi.tests.test_connect-module.html#USE_OAUTH"><a title="scapi.tests.test_connect.USE_OAUTH" class="py-name" href="#" onclick="return doclink('link-7', 'USE_OAUTH', 'link-7');">USE_OAUTH</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"> </tt>
<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.TOKEN=scapi.tests.scapi_tests.SCAPITests-class.html#TOKEN,Variable scapi.tests.test_connect.TOKEN=scapi.tests.test_connect-module.html#TOKEN,Variable scapi.tests.test_oauth.TOKEN=scapi.tests.test_oauth-module.html#TOKEN"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN
scapi.tests.test_connect.TOKEN
scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-8', 'TOKEN', 'link-8');">TOKEN</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"FjNE9aRTg8kpxuOjzwsX8Q"</tt> </tt>
<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.SECRET=scapi.tests.scapi_tests.SCAPITests-class.html#SECRET,Variable scapi.tests.test_connect.SECRET=scapi.tests.test_connect-module.html#SECRET,Variable scapi.tests.test_oauth.SECRET=scapi.tests.test_oauth-module.html#SECRET"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET
scapi.tests.test_connect.SECRET
scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-9', 'SECRET', 'link-9');">SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"NP5PGoyKcQv64E0aZgV4CRNzHfPwR4QghrWoqEgEE"</tt> </tt>
<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONSUMER=scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER,Variable scapi.tests.test_connect.CONSUMER=scapi.tests.test_connect-module.html#CONSUMER,Variable scapi.tests.test_oauth.CONSUMER=scapi.tests.test_oauth-module.html#CONSUMER"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-10', 'CONSUMER', 'link-10');">CONSUMER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"EEi2URUfM97pAAxHTogDpQ"</tt> </tt>
<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET=scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER_SECRET,Variable scapi.tests.test_connect.CONSUMER_SECRET=scapi.tests.test_connect-module.html#CONSUMER_SECRET,Variable scapi.tests.test_oauth.CONSUMER_SECRET=scapi.tests.test_oauth-module.html#CONSUMER_SECRET"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-11', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"NFYd8T3i4jVKGZ9TMy9LHaBQB3Sh8V5sxBiMeMZBow"</tt> </tt>
<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.API_HOST=scapi.tests.scapi_tests.SCAPITests-class.html#API_HOST,Variable scapi.tests.test_connect.API_HOST=scapi.tests.test_connect-module.html#API_HOST"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-12', 'API_HOST', 'link-12');">API_HOST</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"api.soundcloud.dev:3000"</tt> </tt>
<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt id="link-13" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.USER=scapi.tests.scapi_tests.SCAPITests-class.html#USER,Variable scapi.tests.test_connect.USER=scapi.tests.test_connect-module.html#USER"><a title="scapi.tests.scapi_tests.SCAPITests.USER
scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-13', 'USER', 'link-13');">USER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt id="link-14" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.PASSWORD=scapi.tests.scapi_tests.SCAPITests-class.html#PASSWORD,Variable scapi.tests.test_connect.PASSWORD=scapi.tests.test_connect-module.html#PASSWORD"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD
scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-14', 'PASSWORD', 'link-14');">PASSWORD</a></tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> </tt>
<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt id="link-15" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONFIG_NAME=scapi.tests.scapi_tests.SCAPITests-class.html#CONFIG_NAME,Variable scapi.tests.test_connect.CONFIG_NAME=scapi.tests.test_connect-module.html#CONFIG_NAME"><a title="scapi.tests.scapi_tests.SCAPITests.CONFIG_NAME
scapi.tests.test_connect.CONFIG_NAME" class="py-name" href="#" onclick="return doclink('link-15', 'CONFIG_NAME', 'link-15');">CONFIG_NAME</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"soundcloud.cfg"</tt> </tt>
<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> </tt>
<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt id="link-16" class="py-name" targets="Variable scapi.tests.test_connect.CONNECTOR=scapi.tests.test_connect-module.html#CONNECTOR"><a title="scapi.tests.test_connect.CONNECTOR" class="py-name" href="#" onclick="return doclink('link-16', 'CONNECTOR', 'link-16');">CONNECTOR</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt id="link-17" class="py-name" targets="Variable scapi.tests.test_connect.ROOT=scapi.tests.test_connect-module.html#ROOT"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-17', 'ROOT', 'link-17');">ROOT</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="setup"></a><div id="setup-def"><a name="L32"></a><tt class="py-lineno"> 32</tt> <a class="py-toggle" href="#" id="setup-toggle" onclick="return toggle('setup');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#setup">setup</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="setup-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="setup-expanded"><a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> <tt class="py-keyword">global</tt> <tt id="link-18" class="py-name"><a title="scapi.tests.test_connect.CONNECTOR" class="py-name" href="#" onclick="return doclink('link-18', 'CONNECTOR', 'link-16');">CONNECTOR</a></tt><tt class="py-op">,</tt> <tt id="link-19" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-19', 'ROOT', 'link-17');">ROOT</a></tt> </tt>
<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> <tt class="py-comment"># load_config()</tt> </tt>
<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment">#scapi.ApiConnector(host='192.168.2.101:3000', user='tiga', password='test')</tt> </tt>
<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment">#scapi.ApiConnector(host='sandbox-api.soundcloud.com:3030', user='tiga', password='test')</tt> </tt>
<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt id="link-20" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-20', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Variable scapi.USE_PROXY=scapi-module.html#USE_PROXY"><a title="scapi.USE_PROXY" class="py-name" href="#" onclick="return doclink('link-21', 'USE_PROXY', 'link-21');">USE_PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt id="link-22" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-22', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Variable scapi.PROXY=scapi-module.html#PROXY"><a title="scapi.PROXY" class="py-name" href="#" onclick="return doclink('link-23', 'PROXY', 'link-23');">PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://127.0.0.1:10000/'</tt> </tt>
<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> </tt>
<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-24" class="py-name"><a title="scapi.tests.test_connect.USE_OAUTH" class="py-name" href="#" onclick="return doclink('link-24', 'USE_OAUTH', 'link-7');">USE_OAUTH</a></tt><tt class="py-op">:</tt> </tt>
<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> <tt class="py-name">authenticator</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-25', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-26', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Class scapi.authentication.OAuthAuthenticator=scapi.authentication.OAuthAuthenticator-class.html"><a title="scapi.authentication.OAuthAuthenticator" class="py-name" href="#" onclick="return doclink('link-27', 'OAuthAuthenticator', 'link-27');">OAuthAuthenticator</a></tt><tt class="py-op">(</tt><tt id="link-28" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-28', 'CONSUMER', 'link-10');">CONSUMER</a></tt><tt class="py-op">,</tt> </tt>
<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt id="link-29" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-29', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> </tt>
<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt id="link-30" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN
scapi.tests.test_connect.TOKEN
scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-30', 'TOKEN', 'link-8');">TOKEN</a></tt><tt class="py-op">,</tt> </tt>
<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt id="link-31" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET
scapi.tests.test_connect.SECRET
scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-31', 'SECRET', 'link-9');">SECRET</a></tt><tt class="py-op">)</tt> </tt>
<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-name">authenticator</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-32', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-33', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Class scapi.authentication.BasicAuthenticator=scapi.authentication.BasicAuthenticator-class.html"><a title="scapi.authentication.BasicAuthenticator" class="py-name" href="#" onclick="return doclink('link-34', 'BasicAuthenticator', 'link-34');">BasicAuthenticator</a></tt><tt class="py-op">(</tt><tt id="link-35" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.USER
scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-35', 'USER', 'link-13');">USER</a></tt><tt class="py-op">,</tt> <tt id="link-36" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD
scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-36', 'PASSWORD', 'link-14');">PASSWORD</a></tt><tt class="py-op">,</tt> <tt id="link-37" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-37', 'CONSUMER', 'link-10');">CONSUMER</a></tt><tt class="py-op">,</tt> <tt id="link-38" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-38', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt><tt class="py-op">)</tt> </tt>
<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> </tt>
<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt id="link-39" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-39', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"API_HOST: %s"</tt><tt class="py-op">,</tt> <tt id="link-40" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-40', 'API_HOST', 'link-12');">API_HOST</a></tt><tt class="py-op">)</tt> </tt>
<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt id="link-41" class="py-name"><a title="scapi.tests.test_connect.CONNECTOR" class="py-name" href="#" onclick="return doclink('link-41', 'CONNECTOR', 'link-16');">CONNECTOR</a></tt> <tt class="py-op">=</tt> <tt id="link-42" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-42', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Class scapi.ApiConnector=scapi.ApiConnector-class.html"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-43', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">=</tt><tt id="link-44" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-44', 'API_HOST', 'link-12');">API_HOST</a></tt><tt class="py-op">,</tt> </tt>
<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt class="py-name">authenticator</tt><tt class="py-op">)</tt> </tt>
<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt id="link-45" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-45', 'ROOT', 'link-17');">ROOT</a></tt> <tt class="py-op">=</tt> <tt id="link-46" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-46', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Class scapi.Scope=scapi.Scope-class.html"><a title="scapi.Scope" class="py-name" href="#" onclick="return doclink('link-47', 'Scope', 'link-47');">Scope</a></tt><tt class="py-op">(</tt><tt id="link-48" class="py-name"><a title="scapi.tests.test_connect.CONNECTOR" class="py-name" href="#" onclick="return doclink('link-48', 'CONNECTOR', 'link-16');">CONNECTOR</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> </tt>
<a name="load_config"></a><div id="load_config-def"><a name="L53"></a><tt class="py-lineno"> 53</tt> <a class="py-toggle" href="#" id="load_config-toggle" onclick="return toggle('load_config');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#load_config">load_config</a><tt class="py-op">(</tt><tt class="py-param">config_name</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="load_config-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="load_config-expanded"><a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-keyword">global</tt> <tt id="link-49" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN
scapi.tests.test_connect.TOKEN
scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-49', 'TOKEN', 'link-8');">TOKEN</a></tt><tt class="py-op">,</tt> <tt id="link-50" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET
scapi.tests.test_connect.SECRET
scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-50', 'SECRET', 'link-9');">SECRET</a></tt><tt class="py-op">,</tt> <tt id="link-51" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-51', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> <tt id="link-52" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-52', 'CONSUMER', 'link-10');">CONSUMER</a></tt><tt class="py-op">,</tt> <tt id="link-53" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-53', 'API_HOST', 'link-12');">API_HOST</a></tt><tt class="py-op">,</tt> <tt id="link-54" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.USER
scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-54', 'USER', 'link-13');">USER</a></tt><tt class="py-op">,</tt> <tt id="link-55" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD
scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-55', 'PASSWORD', 'link-14');">PASSWORD</a></tt> </tt>
<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">config_name</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-name">config_name</tt> <tt class="py-op">=</tt> <tt id="link-56" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONFIG_NAME
scapi.tests.test_connect.CONFIG_NAME" class="py-name" href="#" onclick="return doclink('link-56', 'CONFIG_NAME', 'link-15');">CONFIG_NAME</a></tt> </tt>
<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">SafeConfigParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-name">current</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">getcwd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">current</tt><tt class="py-op">:</tt> </tt>
<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">current</tt><tt class="py-op">,</tt> <tt class="py-name">config_name</tt><tt class="py-op">)</tt> </tt>
<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Method scapi.json.JsonReader.read()=scapi.json.JsonReader-class.html#read,Function scapi.json.read()=scapi.json-module.html#read"><a title="scapi.json.JsonReader.read
scapi.json.read" class="py-name" href="#" onclick="return doclink('link-57', 'read', 'link-57');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt id="link-58" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN
scapi.tests.test_connect.TOKEN
scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-58', 'TOKEN', 'link-8');">TOKEN</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name" targets="Class Method scapi.RESTBase.get()=scapi.RESTBase-class.html#get"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-59', 'get', 'link-59');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'global'</tt><tt class="py-op">,</tt> <tt class="py-string">'accesstoken'</tt><tt class="py-op">)</tt> </tt>
<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt id="link-60" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET
scapi.tests.test_connect.SECRET
scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-60', 'SECRET', 'link-9');">SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-61', 'get', 'link-59');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'global'</tt><tt class="py-op">,</tt> <tt class="py-string">'accesstoken_secret'</tt><tt class="py-op">)</tt> </tt>
<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt id="link-62" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-62', 'CONSUMER', 'link-10');">CONSUMER</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-63', 'get', 'link-59');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'global'</tt><tt class="py-op">,</tt> <tt class="py-string">'consumer'</tt><tt class="py-op">)</tt> </tt>
<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt id="link-64" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-64', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-65', 'get', 'link-59');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'global'</tt><tt class="py-op">,</tt> <tt class="py-string">'consumer_secret'</tt><tt class="py-op">)</tt> </tt>
<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt id="link-66" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-66', 'API_HOST', 'link-12');">API_HOST</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-67', 'get', 'link-59');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'global'</tt><tt class="py-op">,</tt> <tt class="py-string">'host'</tt><tt class="py-op">)</tt> </tt>
<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt id="link-68" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.USER
scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-68', 'USER', 'link-13');">USER</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-69', 'get', 'link-59');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'global'</tt><tt class="py-op">,</tt> <tt class="py-string">'user'</tt><tt class="py-op">)</tt> </tt>
<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt id="link-70" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD
scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-70', 'PASSWORD', 'link-14');">PASSWORD</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-71', 'get', 'link-59');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'global'</tt><tt class="py-op">,</tt> <tt class="py-string">'password'</tt><tt class="py-op">)</tt> </tt>
<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt id="link-72" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-72', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"token: %s"</tt><tt class="py-op">,</tt> <tt id="link-73" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN
scapi.tests.test_connect.TOKEN
scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-73', 'TOKEN', 'link-8');">TOKEN</a></tt><tt class="py-op">)</tt> </tt>
<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt id="link-74" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-74', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"secret: %s"</tt><tt class="py-op">,</tt> <tt id="link-75" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET
scapi.tests.test_connect.SECRET
scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-75', 'SECRET', 'link-9');">SECRET</a></tt><tt class="py-op">)</tt> </tt>
<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt id="link-76" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-76', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"consumer: %s"</tt><tt class="py-op">,</tt> <tt id="link-77" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-77', 'CONSUMER', 'link-10');">CONSUMER</a></tt><tt class="py-op">)</tt> </tt>
<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt id="link-78" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-78', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"consumer_secret: %s"</tt><tt class="py-op">,</tt> <tt id="link-79" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-79', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt><tt class="py-op">)</tt> </tt>
<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt id="link-80" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-80', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"user: %s"</tt><tt class="py-op">,</tt> <tt id="link-81" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.USER
scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-81', 'USER', 'link-13');">USER</a></tt><tt class="py-op">)</tt> </tt>
<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt id="link-82" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-82', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"password: %s"</tt><tt class="py-op">,</tt> <tt id="link-83" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD
scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-83', 'PASSWORD', 'link-14');">PASSWORD</a></tt><tt class="py-op">)</tt> </tt>
<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt id="link-84" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-84', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"host: %s"</tt><tt class="py-op">,</tt> <tt id="link-85" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-85', 'API_HOST', 'link-12');">API_HOST</a></tt><tt class="py-op">)</tt> </tt>
<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-name">new_current</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">dirname</tt><tt class="py-op">(</tt><tt class="py-name">current</tt><tt class="py-op">)</tt> </tt>
<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">new_current</tt> <tt class="py-op">==</tt> <tt class="py-name">current</tt><tt class="py-op">:</tt> </tt>
<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">current</tt> <tt class="py-op">=</tt> <tt class="py-name">new_current</tt> </tt>
</div><a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> </tt>
<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> </tt>
<a name="test_load_config"></a><div id="test_load_config-def"><a name="L84"></a><tt class="py-lineno"> 84</tt> <a class="py-toggle" href="#" id="test_load_config-toggle" onclick="return toggle('test_load_config');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_load_config">test_load_config</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_load_config-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_load_config-expanded"><a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-name">tempfile</tt><tt class="py-op">.</tt><tt class="py-name">mkdtemp</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-name">oldcwd</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">getcwd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">cdir</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt class="py-string">"foo"</tt><tt class="py-op">)</tt> </tt>
<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">mkdir</tt><tt class="py-op">(</tt><tt class="py-name">cdir</tt><tt class="py-op">)</tt> </tt>
<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">chdir</tt><tt class="py-op">(</tt><tt class="py-name">cdir</tt><tt class="py-op">)</tt> </tt>
<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">test_config</tt> <tt class="py-op">=</tt> <tt class="py-string">"""</tt> </tt>
<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-string">[global]</tt> </tt>
<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-string">host=host</tt> </tt>
<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-string">consumer=consumer</tt> </tt>
<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-string">consumer_secret=consumer_secret</tt> </tt>
<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-string">accesstoken=accesstoken</tt> </tt>
<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-string">accesstoken_secret=accesstoken_secret</tt> </tt>
<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-string">user=user</tt> </tt>
<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-string">password=password</tt> </tt>
<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-string">"""</tt> </tt>
<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-keyword">with</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">base</tt><tt class="py-op">,</tt> <tt id="link-86" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONFIG_NAME
scapi.tests.test_connect.CONFIG_NAME" class="py-name" href="#" onclick="return doclink('link-86', 'CONFIG_NAME', 'link-15');">CONFIG_NAME</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"w"</tt><tt class="py-op">)</tt> <tt class="py-keyword">as</tt> <tt class="py-name">cf</tt><tt class="py-op">:</tt> </tt>
<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">cf</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name" targets="Method scapi.json.JsonWriter.write()=scapi.json.JsonWriter-class.html#write,Function scapi.json.write()=scapi.json-module.html#write"><a title="scapi.json.JsonWriter.write
scapi.json.write" class="py-name" href="#" onclick="return doclink('link-87', 'write', 'link-87');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">test_config</tt><tt class="py-op">)</tt> </tt>
<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt id="link-88" class="py-name" targets="Function scapi.tests.test_connect.load_config()=scapi.tests.test_connect-module.html#load_config"><a title="scapi.tests.test_connect.load_config" class="py-name" href="#" onclick="return doclink('link-88', 'load_config', 'link-88');">load_config</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt id="link-89" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN
scapi.tests.test_connect.TOKEN
scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-89', 'TOKEN', 'link-8');">TOKEN</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"accesstoken"</tt> <tt class="py-keyword">and</tt> <tt id="link-90" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET
scapi.tests.test_connect.SECRET
scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-90', 'SECRET', 'link-9');">SECRET</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"accesstoken_secret"</tt> <tt class="py-keyword">and</tt> <tt id="link-91" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-91', 'API_HOST', 'link-12');">API_HOST</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'host'</tt> </tt>
<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt id="link-92" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-92', 'CONSUMER', 'link-10');">CONSUMER</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"consumer"</tt> <tt class="py-keyword">and</tt> <tt id="link-93" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-93', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"consumer_secret"</tt> </tt>
<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt id="link-94" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.USER
scapi.tests.test_connect.USER" class="py-name" href="#" onclick="return doclink('link-94', 'USER', 'link-13');">USER</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"user"</tt> <tt class="py-keyword">and</tt> <tt id="link-95" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.PASSWORD
scapi.tests.test_connect.PASSWORD" class="py-name" href="#" onclick="return doclink('link-95', 'PASSWORD', 'link-14');">PASSWORD</a></tt> <tt class="py-op">==</tt> <tt class="py-string">"password"</tt> </tt>
<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">chdir</tt><tt class="py-op">(</tt><tt class="py-name">oldcwd</tt><tt class="py-op">)</tt> </tt>
<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt id="link-96" class="py-name"><a title="scapi.tests.test_connect.load_config" class="py-name" href="#" onclick="return doclink('link-96', 'load_config', 'link-88');">load_config</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> </tt>
<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> </tt>
<a name="test_connect"></a><div id="test_connect-def"><a name="L110"></a><tt class="py-lineno">110</tt> <a class="py-toggle" href="#" id="test_connect-toggle" onclick="return toggle('test_connect');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_connect">test_connect</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_connect-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_connect-expanded"><a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-97" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-97', 'ROOT', 'link-17');">ROOT</a></tt> </tt>
<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">quite_a_few_users</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">islice</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">users</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">127</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> </tt>
<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt id="link-98" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-98', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">quite_a_few_users</tt><tt class="py-op">)</tt> </tt>
<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">quite_a_few_users</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">quite_a_few_users</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-99" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-99', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-100" class="py-name" targets="Class scapi.User=scapi.User-class.html"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-100', 'User', 'link-100');">User</a></tt><tt class="py-op">)</tt> </tt>
<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt id="link-101" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-101', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">,</tt> <tt id="link-102" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-102', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-103', 'User', 'link-100');">User</a></tt><tt class="py-op">)</tt> </tt>
<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt>
<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-104" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-104', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-105', 'User', 'link-100');">User</a></tt><tt class="py-op">)</tt> </tt>
<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt id="link-106" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-106', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">)</tt> </tt>
<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt>
<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-107" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-107', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-108" class="py-name" targets="Class scapi.Track=scapi.Track-class.html"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-108', 'Track', 'link-108');">Track</a></tt><tt class="py-op">)</tt> </tt>
<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt id="link-109" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-109', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">)</tt> </tt>
</div><a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> </tt>
<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> </tt>
<a name="test_access_token_acquisition"></a><div id="test_access_token_acquisition-def"><a name="L129"></a><tt class="py-lineno">129</tt> <a class="py-toggle" href="#" id="test_access_token_acquisition-toggle" onclick="return toggle('test_access_token_acquisition');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_access_token_acquisition">test_access_token_acquisition</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_access_token_acquisition-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_access_token_acquisition-expanded"><a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"> This test is commented out because it needs user-interaction.</tt> </tt>
<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-110" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.RUN_INTERACTIVE_TESTS
scapi.tests.test_connect.RUN_INTERACTIVE_TESTS" class="py-name" href="#" onclick="return doclink('link-110', 'RUN_INTERACTIVE_TESTS', 'link-6');">RUN_INTERACTIVE_TESTS</a></tt><tt class="py-op">:</tt> </tt>
<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">oauth_authenticator</tt> <tt class="py-op">=</tt> <tt id="link-111" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-111', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-112', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="scapi.authentication.OAuthAuthenticator" class="py-name" href="#" onclick="return doclink('link-113', 'OAuthAuthenticator', 'link-27');">OAuthAuthenticator</a></tt><tt class="py-op">(</tt><tt id="link-114" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-114', 'CONSUMER', 'link-10');">CONSUMER</a></tt><tt class="py-op">,</tt> </tt>
<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt id="link-115" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-115', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> </tt>
<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> </tt>
<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-116" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-116', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-117', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">=</tt><tt id="link-118" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-118', 'API_HOST', 'link-12');">API_HOST</a></tt><tt class="py-op">,</tt> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt class="py-name">oauth_authenticator</tt><tt class="py-op">)</tt> </tt>
<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">secret</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name" targets="Method scapi.ApiConnector.fetch_request_token()=scapi.ApiConnector-class.html#fetch_request_token"><a title="scapi.ApiConnector.fetch_request_token" class="py-name" href="#" onclick="return doclink('link-119', 'fetch_request_token', 'link-119');">fetch_request_token</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">authorization_url</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name" targets="Method scapi.ApiConnector.get_request_token_authorization_url()=scapi.ApiConnector-class.html#get_request_token_authorization_url"><a title="scapi.ApiConnector.get_request_token_authorization_url" class="py-name" href="#" onclick="return doclink('link-120', 'get_request_token_authorization_url', 'link-120');">get_request_token_authorization_url</a></tt><tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">)</tt> </tt>
<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-name">webbrowser</tt><tt class="py-op">.</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">authorization_url</tt><tt class="py-op">)</tt> </tt>
<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">raw_input</tt><tt class="py-op">(</tt><tt class="py-string">"please press return"</tt><tt class="py-op">)</tt> </tt>
<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-name">oauth_authenticator</tt> <tt class="py-op">=</tt> <tt id="link-121" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-121', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-122', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="scapi.authentication.OAuthAuthenticator" class="py-name" href="#" onclick="return doclink('link-123', 'OAuthAuthenticator', 'link-27');">OAuthAuthenticator</a></tt><tt class="py-op">(</tt><tt id="link-124" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-124', 'CONSUMER', 'link-10');">CONSUMER</a></tt><tt class="py-op">,</tt> </tt>
<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt id="link-125" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-125', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> </tt>
<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">token</tt><tt class="py-op">,</tt> </tt>
<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">secret</tt><tt class="py-op">)</tt> </tt>
<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> </tt>
<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-126" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-126', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-127', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">(</tt><tt id="link-128" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-128', 'API_HOST', 'link-12');">API_HOST</a></tt><tt class="py-op">,</tt> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt class="py-name">oauth_authenticator</tt><tt class="py-op">)</tt> </tt>
<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">secret</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name" targets="Method scapi.ApiConnector.fetch_access_token()=scapi.ApiConnector-class.html#fetch_access_token"><a title="scapi.ApiConnector.fetch_access_token" class="py-name" href="#" onclick="return doclink('link-129', 'fetch_access_token', 'link-129');">fetch_access_token</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt id="link-130" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-130', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Access token: '%s'"</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">)</tt> </tt>
<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt id="link-131" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-131', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Access token secret: '%s'"</tt><tt class="py-op">,</tt> <tt class="py-name">secret</tt><tt class="py-op">)</tt> </tt>
<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-name">oauth_authenticator</tt> <tt class="py-op">=</tt> <tt id="link-132" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-132', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-133', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="scapi.authentication.OAuthAuthenticator" class="py-name" href="#" onclick="return doclink('link-134', 'OAuthAuthenticator', 'link-27');">OAuthAuthenticator</a></tt><tt class="py-op">(</tt><tt id="link-135" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-135', 'CONSUMER', 'link-10');">CONSUMER</a></tt><tt class="py-op">,</tt> </tt>
<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt id="link-136" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-136', 'CONSUMER_SECRET', 'link-11');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> </tt>
<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-name">token</tt><tt class="py-op">,</tt> </tt>
<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">secret</tt><tt class="py-op">)</tt> </tt>
<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> </tt>
<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-137" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-137', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-138', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">(</tt><tt id="link-139" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.API_HOST
scapi.tests.test_connect.API_HOST" class="py-name" href="#" onclick="return doclink('link-139', 'API_HOST', 'link-12');">API_HOST</a></tt><tt class="py-op">,</tt> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt class="py-name">oauth_authenticator</tt><tt class="py-op">)</tt> </tt>
<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt id="link-140" class="py-name" targets="Method scapi.tests.scapi_tests.SCAPITests.test_track_creation()=scapi.tests.scapi_tests.SCAPITests-class.html#test_track_creation,Function scapi.tests.test_connect.test_track_creation()=scapi.tests.test_connect-module.html#test_track_creation"><a title="scapi.tests.scapi_tests.SCAPITests.test_track_creation
scapi.tests.test_connect.test_track_creation" class="py-name" href="#" onclick="return doclink('link-140', 'test_track_creation', 'link-140');">test_track_creation</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> </tt>
<a name="test_track_creation"></a><div id="test_track_creation-def"><a name="L162"></a><tt class="py-lineno">162</tt> <a class="py-toggle" href="#" id="test_track_creation-toggle" onclick="return toggle('test_track_creation');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_track_creation">test_track_creation</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_track_creation-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_track_creation-expanded"><a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-141" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-141', 'ROOT', 'link-17');">ROOT</a></tt> </tt>
<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-142', 'Track', 'link-108');">Track</a></tt><tt class="py-op">.</tt><tt id="link-143" class="py-name" targets="Class Method scapi.RESTBase.new()=scapi.RESTBase-class.html#new"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-143', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">)</tt> </tt>
<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-144" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-144', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-145', 'Track', 'link-108');">Track</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> </tt>
<a name="test_track_update"></a><div id="test_track_update-def"><a name="L167"></a><tt class="py-lineno">167</tt> <a class="py-toggle" href="#" id="test_track_update-toggle" onclick="return toggle('test_track_update');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_track_update">test_track_update</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_track_update-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_track_update-expanded"><a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-146" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-146', 'ROOT', 'link-17');">ROOT</a></tt> </tt>
<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-147', 'Track', 'link-108');">Track</a></tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-148', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">)</tt> </tt>
<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-149" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-149', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-150', 'Track', 'link-108');">Track</a></tt><tt class="py-op">)</tt> </tt>
<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'baz'</tt> </tt>
<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-151', 'Track', 'link-108');">Track</a></tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="scapi.RESTBase.get" class="py-name" href="#" onclick="return doclink('link-152', 'get', 'link-59');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">)</tt> </tt>
<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">title</tt> <tt class="py-op">==</tt> <tt class="py-string">"baz"</tt> </tt>
</div><a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> </tt>
<a name="test_scoped_track_creation"></a><div id="test_scoped_track_creation-def"><a name="L175"></a><tt class="py-lineno">175</tt> <a class="py-toggle" href="#" id="test_scoped_track_creation-toggle" onclick="return toggle('test_scoped_track_creation');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_scoped_track_creation">test_scoped_track_creation</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_scoped_track_creation-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_scoped_track_creation-expanded"><a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-153" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-153', 'ROOT', 'link-17');">ROOT</a></tt> </tt>
<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-154', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">"bar"</tt><tt class="py-op">)</tt> </tt>
<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">,</tt> <tt id="link-155" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-155', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-156', 'Track', 'link-108');">Track</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> </tt>
<a name="test_upload"></a><div id="test_upload-def"><a name="L181"></a><tt class="py-lineno">181</tt> <a class="py-toggle" href="#" id="test_upload-toggle" onclick="return toggle('test_upload');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_upload">test_upload</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_upload-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_upload-expanded"><a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">pkg_resources</tt><tt class="py-op">.</tt><tt class="py-name">resource_exists</tt><tt class="py-op">(</tt><tt class="py-string">"scapi.tests.test_connect"</tt><tt class="py-op">,</tt> <tt class="py-string">"knaster.mp3"</tt><tt class="py-op">)</tt> </tt>
<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">pkg_resources</tt><tt class="py-op">.</tt><tt class="py-name">resource_stream</tt><tt class="py-op">(</tt><tt class="py-string">"scapi.tests.test_connect"</tt><tt class="py-op">,</tt> <tt class="py-string">"knaster.mp3"</tt><tt class="py-op">)</tt> </tt>
<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-157" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-157', 'ROOT', 'link-17');">ROOT</a></tt> </tt>
<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt id="link-158" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-158', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">asset</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">assets</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-159', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">filedata</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">asset</tt><tt class="py-op">,</tt> <tt id="link-160" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-160', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt class="py-name">Asset</tt><tt class="py-op">)</tt> </tt>
<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt id="link-161" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-161', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">asset</tt><tt class="py-op">)</tt> </tt>
<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">tracks</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">assets</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">asset</tt><tt class="py-op">)</tt> </tt>
</div><a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> </tt>
<a name="test_contact_list"></a><div id="test_contact_list-def"><a name="L194"></a><tt class="py-lineno">194</tt> <a class="py-toggle" href="#" id="test_contact_list-toggle" onclick="return toggle('test_contact_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_contact_list">test_contact_list</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_contact_list-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_contact_list-expanded"><a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-162" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-162', 'ROOT', 'link-17');">ROOT</a></tt> </tt>
<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt>
<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contacts</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-163" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-163', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-164', 'User', 'link-100');">User</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> </tt>
<a name="test_permissions"></a><div id="test_permissions-def"><a name="L201"></a><tt class="py-lineno">201</tt> <a class="py-toggle" href="#" id="test_permissions-toggle" onclick="return toggle('test_permissions');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_permissions">test_permissions</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_permissions-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_permissions-expanded"><a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-165" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-165', 'ROOT', 'link-17');">ROOT</a></tt> </tt>
<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">islice</tt><tt class="py-op">(</tt><tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">track</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tracks</tt><tt class="py-op">:</tt> </tt>
<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-name">permissions</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">permissions</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt id="link-166" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-166', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">permissions</tt><tt class="py-op">)</tt> </tt>
<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">permissions</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt>
<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">permissions</tt><tt class="py-op">:</tt> </tt>
<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">permissions</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-167" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-167', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-168', 'User', 'link-100');">User</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> </tt>
<a name="test_setting_permissions"></a><div id="test_setting_permissions-def"><a name="L212"></a><tt class="py-lineno">212</tt> <a class="py-toggle" href="#" id="test_setting_permissions-toggle" onclick="return toggle('test_setting_permissions');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_setting_permissions">test_setting_permissions</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_setting_permissions-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_setting_permissions-expanded"><a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-169" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-169', 'ROOT', 'link-17');">ROOT</a></tt> </tt>
<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-170', 'Track', 'link-108');">Track</a></tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-171', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">sharing</tt><tt class="py-op">=</tt><tt class="py-string">"private"</tt><tt class="py-op">)</tt> </tt>
<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">sharing</tt> <tt class="py-op">==</tt> <tt class="py-string">"private"</tt> </tt>
<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-name">users</tt> <tt class="py-op">=</tt> <tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">islice</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">users</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">10</tt><tt class="py-op">)</tt> </tt>
<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-name">users_to_set</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">user</tt> <tt class="py-keyword">for</tt> <tt class="py-name">user</tt> <tt class="py-keyword">in</tt> <tt class="py-name">users</tt> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-op">!=</tt> <tt class="py-name">me</tt><tt class="py-op">]</tt> </tt>
<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">users_to_set</tt><tt class="py-op">,</tt> <tt class="py-string">"Didn't find any suitable users"</tt> </tt>
<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">permissions</tt> <tt class="py-op">=</tt> <tt class="py-name">users_to_set</tt> </tt>
<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">permissions</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">set</tt><tt class="py-op">(</tt><tt class="py-name">users_to_set</tt><tt class="py-op">)</tt> </tt>
</div><a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> </tt>
<a name="test_setting_comments"></a><div id="test_setting_comments-def"><a name="L223"></a><tt class="py-lineno">223</tt> <a class="py-toggle" href="#" id="test_setting_comments-toggle" onclick="return toggle('test_setting_comments');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_setting_comments">test_setting_comments</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_setting_comments-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_setting_comments-expanded"><a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-172" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-172', 'ROOT', 'link-17');">ROOT</a></tt> </tt>
<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-173', 'Track', 'link-108');">Track</a></tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-174', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">sharing</tt><tt class="py-op">=</tt><tt class="py-string">"private"</tt><tt class="py-op">)</tt> </tt>
<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-name">comment</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name" targets="Class scapi.Comment=scapi.Comment-class.html"><a title="scapi.Comment" class="py-name" href="#" onclick="return doclink('link-175', 'Comment', 'link-175');">Comment</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name" targets="Class Method scapi.RESTBase.create()=scapi.RESTBase-class.html#create"><a title="scapi.RESTBase.create" class="py-name" href="#" onclick="return doclink('link-176', 'create', 'link-176');">create</a></tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-string">"This is the body of my comment"</tt><tt class="py-op">,</tt> <tt class="py-name">timestamp</tt><tt class="py-op">=</tt><tt class="py-number">10</tt><tt class="py-op">)</tt> </tt>
<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">comments</tt> <tt class="py-op">=</tt> <tt class="py-name">comment</tt> </tt>
<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">comments</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name" targets="Method scapi.json._StringGenerator.next()=scapi.json._StringGenerator-class.html#next"><a title="scapi.json._StringGenerator.next" class="py-name" href="#" onclick="return doclink('link-177', 'next', 'link-177');">next</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">==</tt> <tt class="py-name">comment</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> </tt>
</div><a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> </tt>
<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> </tt>
<a name="test_setting_comments_the_way_shawn_says_its_correct"></a><div id="test_setting_comments_the_way_shawn_says_its_correct-def"><a name="L232"></a><tt class="py-lineno">232</tt> <a class="py-toggle" href="#" id="test_setting_comments_the_way_shawn_says_its_correct-toggle" onclick="return toggle('test_setting_comments_the_way_shawn_says_its_correct');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_setting_comments_the_way_shawn_says_its_correct">test_setting_comments_the_way_shawn_says_its_correct</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_setting_comments_the_way_shawn_says_its_correct-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_setting_comments_the_way_shawn_says_its_correct-expanded"><a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-178" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-178', 'ROOT', 'link-17');">ROOT</a></tt> </tt>
<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-179', 'Track', 'link-108');">Track</a></tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-180', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-name">sharing</tt><tt class="py-op">=</tt><tt class="py-string">"private"</tt><tt class="py-op">)</tt> </tt>
<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-name">cbody</tt> <tt class="py-op">=</tt> <tt class="py-string">"This is the body of my comment"</tt> </tt>
<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">comments</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-181', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">cbody</tt><tt class="py-op">,</tt> <tt class="py-name">timestamp</tt><tt class="py-op">=</tt><tt class="py-number">10</tt><tt class="py-op">)</tt> </tt>
<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">.</tt><tt class="py-name">comments</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">==</tt> <tt class="py-name">cbody</tt> </tt>
</div><a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> </tt>
<a name="test_contact_add_and_removal"></a><div id="test_contact_add_and_removal-def"><a name="L239"></a><tt class="py-lineno">239</tt> <a class="py-toggle" href="#" id="test_contact_add_and_removal-toggle" onclick="return toggle('test_contact_add_and_removal');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_contact_add_and_removal">test_contact_add_and_removal</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_contact_add_and_removal-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_contact_add_and_removal-expanded"><a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-182" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-182', 'ROOT', 'link-17');">ROOT</a></tt> </tt>
<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">user</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">users</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-op">!=</tt> <tt class="py-name">me</tt><tt class="py-op">:</tt> </tt>
<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-name">user_to_set</tt> <tt class="py-op">=</tt> <tt class="py-name">user</tt> </tt>
<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> </tt>
<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user_to_set</tt> <tt class="py-keyword">in</tt> <tt class="py-name">contacts</tt><tt class="py-op">:</tt> </tt>
<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">user_to_set</tt><tt class="py-op">)</tt> </tt>
<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> </tt>
<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">user_to_set</tt><tt class="py-op">)</tt> </tt>
<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> </tt>
<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">user_to_set</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">contacts</tt><tt class="py-op">]</tt> </tt>
<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> </tt>
<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">user_to_set</tt><tt class="py-op">)</tt> </tt>
<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> </tt>
<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-name">contacts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">contacts</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">user_to_set</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">contacts</tt> </tt>
</div><a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> </tt>
<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> </tt>
<a name="test_favorites"></a><div id="test_favorites-def"><a name="L262"></a><tt class="py-lineno">262</tt> <a class="py-toggle" href="#" id="test_favorites-toggle" onclick="return toggle('test_favorites');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_favorites">test_favorites</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_favorites-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_favorites-expanded"><a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-183" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-183', 'ROOT', 'link-17');">ROOT</a></tt> </tt>
<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> </tt>
<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-name">favorites</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">favorites</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-keyword">or</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">favorites</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-184" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-184', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-185', 'Track', 'link-108');">Track</a></tt><tt class="py-op">)</tt> </tt>
<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> </tt>
<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-name">track</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">user</tt> <tt class="py-keyword">in</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">users</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-op">==</tt> <tt class="py-name">me</tt><tt class="py-op">:</tt> </tt>
<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt>
<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">track</tt> <tt class="py-keyword">in</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">track</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> </tt>
<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">)</tt> </tt>
<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> </tt>
<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-name">favorites</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt> <tt class="py-keyword">in</tt> <tt class="py-name">favorites</tt> </tt>
<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> </tt>
<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">track</tt><tt class="py-op">)</tt> </tt>
<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> </tt>
<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">favorites</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">track</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">favorites</tt> </tt>
</div><a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> </tt>
<a name="test_large_list"></a><div id="test_large_list-def"><a name="L288"></a><tt class="py-lineno">288</tt> <a class="py-toggle" href="#" id="test_large_list-toggle" onclick="return toggle('test_large_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_large_list">test_large_list</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_large_list-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_large_list-expanded"><a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-186" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-186', 'ROOT', 'link-17');">ROOT</a></tt> </tt>
<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt id="link-187" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-187', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-188', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-189" class="py-name" targets="Variable scapi.ApiConnector.LIST_LIMIT=scapi.ApiConnector-class.html#LIST_LIMIT"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-189', 'LIST_LIMIT', 'link-189');">LIST_LIMIT</a></tt><tt class="py-op">:</tt> </tt>
<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt id="link-190" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-190', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-191', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-192', 'LIST_LIMIT', 'link-189');">LIST_LIMIT</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt id="link-193" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-193', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="scapi.Track" class="py-name" href="#" onclick="return doclink('link-194', 'Track', 'link-108');">Track</a></tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="scapi.RESTBase.new" class="py-name" href="#" onclick="return doclink('link-195', 'new', 'link-143');">new</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">=</tt><tt class="py-string">'test_track_%i'</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-name">all_tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt>
<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">all_tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">)</tt> </tt>
<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">all_tracks</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt id="link-196" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-196', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="scapi.ApiConnector" class="py-name" href="#" onclick="return doclink('link-197', 'ApiConnector', 'link-43');">ApiConnector</a></tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="scapi.ApiConnector.LIST_LIMIT" class="py-name" href="#" onclick="return doclink('link-198', 'LIST_LIMIT', 'link-189');">LIST_LIMIT</a></tt> </tt>
</div><a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> </tt>
<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> </tt>
<a name="test_events"></a><div id="test_events-def"><a name="L300"></a><tt class="py-lineno">300</tt> <a class="py-toggle" href="#" id="test_events-toggle" onclick="return toggle('test_events');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_events">test_events</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_events-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_events-expanded"><a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-199" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-199', 'ROOT', 'link-17');">ROOT</a></tt><tt class="py-op">.</tt><tt class="py-name">events</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt> </tt>
<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-200" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-200', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-201" class="py-name" targets="Class scapi.Event=scapi.Event-class.html"><a title="scapi.Event" class="py-name" href="#" onclick="return doclink('link-201', 'Event', 'link-201');">Event</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> </tt>
<a name="test_me_having_stress"></a><div id="test_me_having_stress-def"><a name="L305"></a><tt class="py-lineno">305</tt> <a class="py-toggle" href="#" id="test_me_having_stress-toggle" onclick="return toggle('test_me_having_stress');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_me_having_stress">test_me_having_stress</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_me_having_stress-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_me_having_stress-expanded"><a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-202" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-202', 'ROOT', 'link-17');">ROOT</a></tt> </tt>
<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">_</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt class="py-number">20</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt id="link-203" class="py-name" targets="Function scapi.tests.test_connect.setup()=scapi.tests.test_connect-module.html#setup"><a title="scapi.tests.test_connect.setup" class="py-name" href="#" onclick="return doclink('link-203', 'setup', 'link-203');">setup</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> </tt>
<a name="test_non_global_api"></a><div id="test_non_global_api-def"><a name="L311"></a><tt class="py-lineno">311</tt> <a class="py-toggle" href="#" id="test_non_global_api-toggle" onclick="return toggle('test_non_global_api');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_non_global_api">test_non_global_api</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_non_global_api-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_non_global_api-expanded"><a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt id="link-204" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.root=scapi.tests.scapi_tests.SCAPITests-class.html#root"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-204', 'root', 'link-204');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-205" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-205', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="scapi.Scope" class="py-name" href="#" onclick="return doclink('link-206', 'Scope', 'link-47');">Scope</a></tt><tt class="py-op">(</tt><tt id="link-207" class="py-name"><a title="scapi.tests.test_connect.CONNECTOR" class="py-name" href="#" onclick="return doclink('link-207', 'CONNECTOR', 'link-16');">CONNECTOR</a></tt><tt class="py-op">)</tt> </tt>
<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-name">me</tt> <tt class="py-op">=</tt> <tt id="link-208" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.root" class="py-name" href="#" onclick="return doclink('link-208', 'root', 'link-204');">root</a></tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">,</tt> <tt id="link-209" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-209', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-210', 'User', 'link-100');">User</a></tt><tt class="py-op">)</tt> </tt>
<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> </tt>
<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-comment"># now get something *from* that user</tt> </tt>
<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">favorites</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">me</tt><tt class="py-op">.</tt><tt class="py-name">favorites</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">favorites</tt> </tt>
</div><a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> </tt>
<a name="test_playlists"></a><div id="test_playlists-def"><a name="L320"></a><tt class="py-lineno">320</tt> <a class="py-toggle" href="#" id="test_playlists-toggle" onclick="return toggle('test_playlists');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_connect-module.html#test_playlists">test_playlists</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_playlists-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_playlists-expanded"><a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-211" class="py-name"><a title="scapi.tests.test_connect.ROOT" class="py-name" href="#" onclick="return doclink('link-211', 'ROOT', 'link-17');">ROOT</a></tt> </tt>
<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-name">playlists</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">itertools</tt><tt class="py-op">.</tt><tt class="py-name">islice</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">playlists</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">127</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-name">found</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">playlist</tt> <tt class="py-keyword">in</tt> <tt class="py-name">playlists</tt><tt class="py-op">:</tt> </tt>
<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-name">playlist</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt> </tt>
<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">tracks</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-name">tracks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">tracks</tt><tt class="py-op">]</tt> </tt>
<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">trackdata</tt> <tt class="py-keyword">in</tt> <tt class="py-name">tracks</tt><tt class="py-op">:</tt> </tt>
<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-name">trackdata</tt> </tt>
<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">trackdata</tt><tt class="py-op">.</tt><tt class="py-name">user</tt> </tt>
<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-name">user</tt> </tt>
<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">tracks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-name">playlist</tt><tt class="py-op">.</tt><tt class="py-name">user</tt> </tt>
<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
</div><a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
</script>
</pre>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,225 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.tests.test_oauth</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
<a href="scapi.tests-module.html">Package&nbsp;tests</a> ::
Module&nbsp;test_oauth
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.tests.test_oauth-module.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== MODULE DESCRIPTION ==================== -->
<h1 class="epydoc">Module test_oauth</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.tests.test_oauth-pysrc.html">source&nbsp;code</a></span></p>
<!-- ==================== FUNCTIONS ==================== -->
<a name="section-Functions"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Functions</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Functions"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_base64_connect"></a><span class="summary-sig-name">test_base64_connect</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_oauth-pysrc.html#test_base64_connect">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="test_oauth_connect"></a><span class="summary-sig-name">test_oauth_connect</span>()</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.tests.test_oauth-pysrc.html#test_oauth_connect">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!-- ==================== VARIABLES ==================== -->
<a name="section-Variables"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Variables</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Variables"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(__name__)">logging.getLogger(__name__)</code>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="_logger"></a><span class="summary-name">_logger</span> = <code title="logging.getLogger(&quot;scapi&quot;)">logging.getLogger(&quot;scapi&quot;)</code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="TOKEN"></a><span class="summary-name">TOKEN</span> = <code title="'QcciYu1FSwDSGKAG2mNw'"><code class="variable-quote">'</code><code class="variable-string">QcciYu1FSwDSGKAG2mNw</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="SECRET"></a><span class="summary-name">SECRET</span> = <code title="'gJ2ok6ULUsYQB3rsBmpHCRHoFCAPOgK8ZjoIyxzris'"><code class="variable-quote">'</code><code class="variable-string">gJ2ok6ULUsYQB3rsBmpHCRHoFCAPOgK8ZjoIyxzris</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="CONSUMER"></a><span class="summary-name">CONSUMER</span> = <code title="'Cy2eLPrIMp4vOxjz9icdQ'"><code class="variable-quote">'</code><code class="variable-string">Cy2eLPrIMp4vOxjz9icdQ</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a name="CONSUMER_SECRET"></a><span class="summary-name">CONSUMER_SECRET</span> = <code title="'KsBa272x6M2to00Vo5FdvZXt9kakcX7CDIPJoGwTro'"><code class="variable-quote">'</code><code class="variable-string">KsBa272x6M2to00Vo5FdvZXt9kakcX7CDIPJoGwTro</code><code class="variable-quote">'</code></code>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,182 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.tests.test_oauth</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
<a href="scapi.tests-module.html">Package&nbsp;tests</a> ::
Module&nbsp;test_oauth
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.tests.test_oauth-pysrc.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<h1 class="epydoc">Source Code for <a href="scapi.tests.test_oauth-module.html">Module scapi.tests.test_oauth</a></h1>
<pre class="py-src">
<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pkg_resources</tt> </tt>
<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package scapi=scapi-module.html"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-0', 'scapi', 'link-0');">scapi</a></tt> </tt>
<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-1', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module scapi.authentication=scapi.authentication-module.html"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-2', 'authentication', 'link-2');">authentication</a></tt> </tt>
<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt> </tt>
<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"> </tt>
<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable scapi.authentication.logger=scapi.authentication-module.html#logger,Variable scapi.logger=scapi-module.html#logger,Variable scapi.tests.scapi_tests.logger=scapi.tests.scapi_tests-module.html#logger,Variable scapi.tests.test_connect.logger=scapi.tests.test_connect-module.html#logger,Variable scapi.tests.test_oauth.logger=scapi.tests.test_oauth-module.html#logger"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-3', 'logger', 'link-3');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt id="link-4" class="py-name"><a title="scapi.authentication.logger
scapi.logger
scapi.tests.scapi_tests.logger
scapi.tests.test_connect.logger
scapi.tests.test_oauth.logger" class="py-name" href="#" onclick="return doclink('link-4', 'logger', 'link-3');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">DEBUG</tt><tt class="py-op">)</tt> </tt>
<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable scapi.tests.test_connect._logger=scapi.tests.test_connect-module.html#_logger,Variable scapi.tests.test_oauth._logger=scapi.tests.test_oauth-module.html#_logger"><a title="scapi.tests.test_connect._logger
scapi.tests.test_oauth._logger" class="py-name" href="#" onclick="return doclink('link-5', '_logger', 'link-5');">_logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">"scapi"</tt><tt class="py-op">)</tt> </tt>
<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt id="link-6" class="py-name"><a title="scapi.tests.test_connect._logger
scapi.tests.test_oauth._logger" class="py-name" href="#" onclick="return doclink('link-6', '_logger', 'link-5');">_logger</a></tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">DEBUG</tt><tt class="py-op">)</tt> </tt>
<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"> </tt>
<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.TOKEN=scapi.tests.scapi_tests.SCAPITests-class.html#TOKEN,Variable scapi.tests.test_connect.TOKEN=scapi.tests.test_connect-module.html#TOKEN,Variable scapi.tests.test_oauth.TOKEN=scapi.tests.test_oauth-module.html#TOKEN"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN
scapi.tests.test_connect.TOKEN
scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-7', 'TOKEN', 'link-7');">TOKEN</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"QcciYu1FSwDSGKAG2mNw"</tt> </tt>
<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.SECRET=scapi.tests.scapi_tests.SCAPITests-class.html#SECRET,Variable scapi.tests.test_connect.SECRET=scapi.tests.test_connect-module.html#SECRET,Variable scapi.tests.test_oauth.SECRET=scapi.tests.test_oauth-module.html#SECRET"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET
scapi.tests.test_connect.SECRET
scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-8', 'SECRET', 'link-8');">SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"gJ2ok6ULUsYQB3rsBmpHCRHoFCAPOgK8ZjoIyxzris"</tt> </tt>
<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONSUMER=scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER,Variable scapi.tests.test_connect.CONSUMER=scapi.tests.test_connect-module.html#CONSUMER,Variable scapi.tests.test_oauth.CONSUMER=scapi.tests.test_oauth-module.html#CONSUMER"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-9', 'CONSUMER', 'link-9');">CONSUMER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Cy2eLPrIMp4vOxjz9icdQ"</tt> </tt>
<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET=scapi.tests.scapi_tests.SCAPITests-class.html#CONSUMER_SECRET,Variable scapi.tests.test_connect.CONSUMER_SECRET=scapi.tests.test_connect-module.html#CONSUMER_SECRET,Variable scapi.tests.test_oauth.CONSUMER_SECRET=scapi.tests.test_oauth-module.html#CONSUMER_SECRET"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-10', 'CONSUMER_SECRET', 'link-10');">CONSUMER_SECRET</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"KsBa272x6M2to00Vo5FdvZXt9kakcX7CDIPJoGwTro"</tt> </tt>
<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"> </tt>
<a name="test_base64_connect"></a><div id="test_base64_connect-def"><a name="L17"></a><tt class="py-lineno">17</tt> <a class="py-toggle" href="#" id="test_base64_connect-toggle" onclick="return toggle('test_base64_connect');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_oauth-module.html#test_base64_connect">test_base64_connect</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_base64_connect-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="test_base64_connect-expanded"><a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"> <tt id="link-11" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-11', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Variable scapi.USE_PROXY=scapi-module.html#USE_PROXY"><a title="scapi.USE_PROXY" class="py-name" href="#" onclick="return doclink('link-12', 'USE_PROXY', 'link-12');">USE_PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"> <tt id="link-13" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-13', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Variable scapi.PROXY=scapi-module.html#PROXY"><a title="scapi.PROXY" class="py-name" href="#" onclick="return doclink('link-14', 'PROXY', 'link-14');">PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://127.0.0.1:10000/'</tt> </tt>
<a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"> <tt id="link-15" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-15', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt class="py-name">SoundCloudAPI</tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">=</tt><tt class="py-string">'192.168.2.31:3000'</tt><tt class="py-op">,</tt> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt id="link-16" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-16', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-17', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Class scapi.authentication.BasicAuthenticator=scapi.authentication.BasicAuthenticator-class.html"><a title="scapi.authentication.BasicAuthenticator" class="py-name" href="#" onclick="return doclink('link-18', 'BasicAuthenticator', 'link-18');">BasicAuthenticator</a></tt><tt class="py-op">(</tt><tt class="py-string">'tiga'</tt><tt class="py-op">,</tt> <tt class="py-string">'test'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-19" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-19', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Class scapi.Scope=scapi.Scope-class.html"><a title="scapi.Scope" class="py-name" href="#" onclick="return doclink('link-20', 'Scope', 'link-20');">Scope</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L22"></a><tt class="py-lineno">22</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-21" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-21', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Class scapi.User=scapi.User-class.html"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-22', 'User', 'link-22');">User</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L23"></a><tt class="py-lineno">23</tt> <tt class="py-line"> </tt>
<a name="L24"></a><tt class="py-lineno">24</tt> <tt class="py-line"> </tt>
<a name="test_oauth_connect"></a><div id="test_oauth_connect-def"><a name="L25"></a><tt class="py-lineno">25</tt> <a class="py-toggle" href="#" id="test_oauth_connect-toggle" onclick="return toggle('test_oauth_connect');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.tests.test_oauth-module.html#test_oauth_connect">test_oauth_connect</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="test_oauth_connect-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="test_oauth_connect-expanded"><a name="L26"></a><tt class="py-lineno">26</tt> <tt class="py-line"> <tt id="link-23" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-23', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="scapi.USE_PROXY" class="py-name" href="#" onclick="return doclink('link-24', 'USE_PROXY', 'link-12');">USE_PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L27"></a><tt class="py-lineno">27</tt> <tt class="py-line"> <tt id="link-25" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-25', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="scapi.PROXY" class="py-name" href="#" onclick="return doclink('link-26', 'PROXY', 'link-14');">PROXY</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://127.0.0.1:10000/'</tt> </tt>
<a name="L28"></a><tt class="py-lineno">28</tt> <tt class="py-line"> <tt id="link-27" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-27', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt class="py-name">SoundCloudAPI</tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">=</tt><tt class="py-string">'192.168.2.31:3000'</tt><tt class="py-op">,</tt> </tt>
<a name="L29"></a><tt class="py-lineno">29</tt> <tt class="py-line"> <tt class="py-name">authenticator</tt><tt class="py-op">=</tt><tt id="link-28" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-28', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="scapi.authentication" class="py-name" href="#" onclick="return doclink('link-29', 'authentication', 'link-2');">authentication</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Class scapi.authentication.OAuthAuthenticator=scapi.authentication.OAuthAuthenticator-class.html"><a title="scapi.authentication.OAuthAuthenticator" class="py-name" href="#" onclick="return doclink('link-30', 'OAuthAuthenticator', 'link-30');">OAuthAuthenticator</a></tt><tt class="py-op">(</tt><tt id="link-31" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER
scapi.tests.test_connect.CONSUMER
scapi.tests.test_oauth.CONSUMER" class="py-name" href="#" onclick="return doclink('link-31', 'CONSUMER', 'link-9');">CONSUMER</a></tt><tt class="py-op">,</tt> </tt>
<a name="L30"></a><tt class="py-lineno">30</tt> <tt class="py-line"> <tt id="link-32" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.CONSUMER_SECRET
scapi.tests.test_connect.CONSUMER_SECRET
scapi.tests.test_oauth.CONSUMER_SECRET" class="py-name" href="#" onclick="return doclink('link-32', 'CONSUMER_SECRET', 'link-10');">CONSUMER_SECRET</a></tt><tt class="py-op">,</tt> </tt>
<a name="L31"></a><tt class="py-lineno">31</tt> <tt class="py-line"> <tt id="link-33" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.TOKEN
scapi.tests.test_connect.TOKEN
scapi.tests.test_oauth.TOKEN" class="py-name" href="#" onclick="return doclink('link-33', 'TOKEN', 'link-7');">TOKEN</a></tt><tt class="py-op">,</tt> <tt id="link-34" class="py-name"><a title="scapi.tests.scapi_tests.SCAPITests.SECRET
scapi.tests.test_connect.SECRET
scapi.tests.test_oauth.SECRET" class="py-name" href="#" onclick="return doclink('link-34', 'SECRET', 'link-8');">SECRET</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L32"></a><tt class="py-lineno">32</tt> <tt class="py-line"> </tt>
<a name="L33"></a><tt class="py-lineno">33</tt> <tt class="py-line"> <tt class="py-name">sca</tt> <tt class="py-op">=</tt> <tt id="link-35" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-35', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="scapi.Scope" class="py-name" href="#" onclick="return doclink('link-36', 'Scope', 'link-20');">Scope</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L34"></a><tt class="py-lineno">34</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">sca</tt><tt class="py-op">.</tt><tt class="py-name">me</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-37" class="py-name"><a title="scapi" class="py-name" href="#" onclick="return doclink('link-37', 'scapi', 'link-0');">scapi</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="scapi.User" class="py-name" href="#" onclick="return doclink('link-38', 'User', 'link-22');">User</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L35"></a><tt class="py-lineno">35</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
</script>
</pre>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,173 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.util</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Module&nbsp;util
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.util-module.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== MODULE DESCRIPTION ==================== -->
<h1 class="epydoc">Module util</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.util-pysrc.html">source&nbsp;code</a></span></p>
<!-- ==================== CLASSES ==================== -->
<a name="section-Classes"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Classes</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Classes"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<a href="scapi.util.MultiDict-class.html" class="summary-name">MultiDict</a>
</td>
</tr>
</table>
<!-- ==================== FUNCTIONS ==================== -->
<a name="section-Functions"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Functions</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Functions"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="escape"></a><span class="summary-sig-name">escape</span>(<span class="summary-sig-arg">s</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.util-pysrc.html#escape">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,171 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.util</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
Module&nbsp;util
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.util-pysrc.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<h1 class="epydoc">Source Code for <a href="scapi.util-module.html" onclick="show_private();">Module scapi.util</a></h1>
<pre class="py-src">
<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">## SouncCloudAPI implements a Python wrapper around the SoundCloud RESTful</tt> </tt>
<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## API</tt> </tt>
<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt>
<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Copyright (C) 2008 Diez B. Roggisch</tt> </tt>
<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Contact mailto:deets@soundcloud.com</tt> </tt>
<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt>
<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## This library is free software; you can redistribute it and/or</tt> </tt>
<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## modify it under the terms of the GNU Lesser General Public</tt> </tt>
<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## License as published by the Free Software Foundation; either</tt> </tt>
<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## version 2.1 of the License, or (at your option) any later version.</tt> </tt>
<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt>
<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## This library is distributed in the hope that it will be useful,</tt> </tt>
<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</tt> </tt>
<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Lesser General Public License for more details.</tt> </tt>
<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##</tt> </tt>
<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## You should have received a copy of the GNU Lesser General Public</tt> </tt>
<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## License along with this library; if not, write to the Free Software</tt> </tt>
<a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</tt> </tt>
<a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
<a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt> </tt>
<a name="L22"></a><tt class="py-lineno">22</tt> <tt class="py-line"> </tt>
<a name="escape"></a><div id="escape-def"><a name="L23"></a><tt class="py-lineno">23</tt> <a class="py-toggle" href="#" id="escape-toggle" onclick="return toggle('escape');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.util-module.html#escape">escape</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="escape-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="escape-expanded"><a name="L24"></a><tt class="py-lineno">24</tt> <tt class="py-line"> <tt class="py-comment"># escape '/' too</tt> </tt>
<a name="L25"></a><tt class="py-lineno">25</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">safe</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
</div><a name="L26"></a><tt class="py-lineno">26</tt> <tt class="py-line"> </tt>
<a name="L27"></a><tt class="py-lineno">27</tt> <tt class="py-line"> </tt>
<a name="L28"></a><tt class="py-lineno">28</tt> <tt class="py-line"> </tt>
<a name="L29"></a><tt class="py-lineno">29</tt> <tt class="py-line"> </tt>
<a name="L30"></a><tt class="py-lineno">30</tt> <tt class="py-line"> </tt>
<a name="L31"></a><tt class="py-lineno">31</tt> <tt class="py-line"> </tt>
<a name="MultiDict"></a><div id="MultiDict-def"><a name="L32"></a><tt class="py-lineno">32</tt> <a class="py-toggle" href="#" id="MultiDict-toggle" onclick="return toggle('MultiDict');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="scapi.util.MultiDict-class.html">MultiDict</a><tt class="py-op">(</tt><tt class="py-base-class">dict</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="MultiDict-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="MultiDict-expanded"><a name="L33"></a><tt class="py-lineno">33</tt> <tt class="py-line"> </tt>
<a name="L34"></a><tt class="py-lineno">34</tt> <tt class="py-line"> </tt>
<a name="MultiDict.add"></a><div id="MultiDict.add-def"><a name="L35"></a><tt class="py-lineno">35</tt> <a class="py-toggle" href="#" id="MultiDict.add-toggle" onclick="return toggle('MultiDict.add');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.util.MultiDict-class.html#add">add</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">new_value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="MultiDict.add-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="MultiDict.add-expanded"><a name="L36"></a><tt class="py-lineno">36</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">:</tt> </tt>
<a name="L37"></a><tt class="py-lineno">37</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
<a name="L38"></a><tt class="py-lineno">38</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L39"></a><tt class="py-lineno">39</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">value</tt><tt class="py-op">]</tt> </tt>
<a name="L40"></a><tt class="py-lineno">40</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
<a name="L41"></a><tt class="py-lineno">41</tt> <tt class="py-line"> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">new_value</tt><tt class="py-op">)</tt> </tt>
<a name="L42"></a><tt class="py-lineno">42</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L43"></a><tt class="py-lineno">43</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">new_value</tt> </tt>
</div><a name="L44"></a><tt class="py-lineno">44</tt> <tt class="py-line"> </tt>
<a name="L45"></a><tt class="py-lineno">45</tt> <tt class="py-line"> </tt>
<a name="MultiDict.iteritemslist"></a><div id="MultiDict.iteritemslist-def"><a name="L46"></a><tt class="py-lineno">46</tt> <a class="py-toggle" href="#" id="MultiDict.iteritemslist-toggle" onclick="return toggle('MultiDict.iteritemslist');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="scapi.util.MultiDict-class.html#iteritemslist">iteritemslist</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="MultiDict.iteritemslist-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="MultiDict.iteritemslist-expanded"><a name="L47"></a><tt class="py-lineno">47</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L48"></a><tt class="py-lineno">48</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L49"></a><tt class="py-lineno">49</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">value</tt><tt class="py-op">]</tt> </tt>
<a name="L50"></a><tt class="py-lineno">50</tt> <tt class="py-line"> <tt class="py-keyword">yield</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> </tt>
</div></div><a name="L51"></a><tt class="py-lineno">51</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
</script>
</pre>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:50 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,247 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi.util.MultiDict</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
<a href="scapi-module.html">Package&nbsp;scapi</a> ::
<a href="scapi.util-module.html" onclick="show_private();">Module&nbsp;util</a> ::
Class&nbsp;MultiDict
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>]&nbsp;|&nbsp;<a href="scapi.util.MultiDict-class.html"
target="_top">no&nbsp;frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class MultiDict</h1><p class="nomargin-top"><span class="codelink"><a href="scapi.util-pysrc.html#MultiDict">source&nbsp;code</a></span></p>
<pre class="base-tree">
object --+
|
dict --+
|
<strong class="uidshort">MultiDict</strong>
</pre>
<hr />
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Instance Methods</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-InstanceMethods"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="add"></a><span class="summary-sig-name">add</span>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">key</span>,
<span class="summary-sig-arg">new_value</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.util-pysrc.html#MultiDict.add">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type">&nbsp;</span>
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="iteritemslist"></a><span class="summary-sig-name">iteritemslist</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
<span class="codelink"><a href="scapi.util-pysrc.html#MultiDict.iteritemslist">source&nbsp;code</a></span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>dict</code></b>:
<code>__cmp__</code>,
<code>__contains__</code>,
<code>__delitem__</code>,
<code>__eq__</code>,
<code>__ge__</code>,
<code>__getattribute__</code>,
<code>__getitem__</code>,
<code>__gt__</code>,
<code>__hash__</code>,
<code>__init__</code>,
<code>__iter__</code>,
<code>__le__</code>,
<code>__len__</code>,
<code>__lt__</code>,
<code>__ne__</code>,
<code>__new__</code>,
<code>__repr__</code>,
<code>__setitem__</code>,
<code>clear</code>,
<code>copy</code>,
<code>fromkeys</code>,
<code>get</code>,
<code>has_key</code>,
<code>items</code>,
<code>iteritems</code>,
<code>iterkeys</code>,
<code>itervalues</code>,
<code>keys</code>,
<code>pop</code>,
<code>popitem</code>,
<code>setdefault</code>,
<code>update</code>,
<code>values</code>
</p>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
<code>__setattr__</code>,
<code>__str__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td colspan="2" class="table-header">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td align="left"><span class="table-header">Properties</span></td>
<td align="right" valign="top"
><span class="options">[<a href="#section-Properties"
class="privatelink" onclick="toggle_private();"
>hide private</a>]</span></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
</td>
</tr>
</table>
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Home link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="scapi-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Tree link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Index link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Help link -->
<th>&nbsp;&nbsp;&nbsp;<a
href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
<!-- Project homepage -->
<th class="navbar" align="right" width="100%">
<table border="0" cellpadding="0" cellspacing="0">
<tr><th class="navbar" align="center"
>SoundCloud API</th>
</tr></table></th>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
Generated by Epydoc 3.0.1 on Thu Sep 10 00:58:49 2009
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
>http://epydoc.sourceforge.net</a>
</td>
</tr>
</table>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,151 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Everything</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<h1 class="toc">Everything</h1>
<hr />
<h2 class="toc">All Classes</h2>
<a target="mainFrame" href="exceptions.AssertionError-class.html"
>exceptions.AssertionError</a><br /> <div class="private">
<a target="mainFrame" href="scapi.ApiConnector-class.html"
>scapi.ApiConnector</a><br /> </div>
<a target="mainFrame" href="scapi.Comment-class.html"
>scapi.Comment</a><br /> <a target="mainFrame" href="scapi.Event-class.html"
>scapi.Event</a><br /> <a target="mainFrame" href="scapi.Group-class.html"
>scapi.Group</a><br /> <div class="private">
<a target="mainFrame" href="scapi.InvalidMethodException-class.html"
>scapi.InvalidMethodException</a><br /> </div>
<div class="private">
<a target="mainFrame" href="scapi.NoResultFromRequest-class.html"
>scapi.NoResultFromRequest</a><br /> </div>
<a target="mainFrame" href="scapi.Playlist-class.html"
>scapi.Playlist</a><br /> <div class="private">
<a target="mainFrame" href="scapi.RESTBase-class.html"
>scapi.RESTBase</a><br /> </div>
<div class="private">
<a target="mainFrame" href="scapi.SCRedirectHandler-class.html"
>scapi.SCRedirectHandler</a><br /> </div>
<div class="private">
<a target="mainFrame" href="scapi.Scope-class.html"
>scapi.Scope</a><br /> </div>
<a target="mainFrame" href="scapi.Track-class.html"
>scapi.Track</a><br /> <div class="private">
<a target="mainFrame" href="scapi.UnknownContentType-class.html"
>scapi.UnknownContentType</a><br /> </div>
<a target="mainFrame" href="scapi.User-class.html"
>scapi.User</a><br /> <div class="private">
<a target="mainFrame" href="scapi.authentication.BasicAuthenticator-class.html"
>scapi.authentication.BasicAuthenticator</a><br /> </div>
<div class="private">
<a target="mainFrame" href="scapi.authentication.OAuthAuthenticator-class.html"
>scapi.authentication.OAuthAuthenticator</a><br /> </div>
<div class="private">
<a target="mainFrame" href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html"
>scapi.authentication.OAuthSignatureMethod_HMAC_SHA1</a><br /> </div>
<a target="mainFrame" href="scapi.json.JsonReader-class.html"
>scapi.json.JsonReader</a><br /> <a target="mainFrame" href="scapi.json.JsonWriter-class.html"
>scapi.json.JsonWriter</a><br /> <a target="mainFrame" href="scapi.json.ReadException-class.html"
>scapi.json.ReadException</a><br /> <a target="mainFrame" href="scapi.json.WriteException-class.html"
>scapi.json.WriteException</a><br /> <div class="private">
<a target="mainFrame" href="scapi.json._StringGenerator-class.html"
>scapi.json._StringGenerator</a><br /> </div>
<a target="mainFrame" href="scapi.tests.scapi_tests.SCAPITests-class.html"
>scapi.tests.scapi_tests.SCAPITests</a><br /> <div class="private">
<a target="mainFrame" href="scapi.util.MultiDict-class.html"
>scapi.util.MultiDict</a><br /> </div>
<h2 class="toc">All Functions</h2>
<a target="mainFrame" href="scapi.json-module.html#read"
>scapi.json.read</a><br /> <a target="mainFrame" href="scapi.json-module.html#write"
>scapi.json.write</a><br /> <div class="private">
<a target="mainFrame" href="scapi-module.html#register_classes"
>scapi.register_classes</a><br /> </div>
<a target="mainFrame" href="scapi.tests.test_connect-module.html#load_config"
>scapi.tests.test_connect.load_config</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#setup"
>scapi.tests.test_connect.setup</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_access_token_acquisition"
>scapi.tests.test_connect.test_access_token_acquisition</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_connect"
>scapi.tests.test_connect.test_connect</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_contact_add_and_removal"
>scapi.tests.test_connect.test_contact_add_and_removal</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_contact_list"
>scapi.tests.test_connect.test_contact_list</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_events"
>scapi.tests.test_connect.test_events</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_favorites"
>scapi.tests.test_connect.test_favorites</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_large_list"
>scapi.tests.test_connect.test_large_list</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_load_config"
>scapi.tests.test_connect.test_load_config</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_me_having_stress"
>scapi.tests.test_connect.test_me_having_stress</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_non_global_api"
>scapi.tests.test_connect.test_non_global_api</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_permissions"
>scapi.tests.test_connect.test_permissions</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_playlists"
>scapi.tests.test_connect.test_playlists</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_scoped_track_creation"
>scapi.tests.test_connect.test_scoped_track_creation</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_setting_comments"
>scapi.tests.test_connect.test_setting_comments</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_setting_comments_the_way_shawn_says_its_correct"
>scapi.tests.test_connect.test_setting_comments_the_way_shawn_says_its_correct</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_setting_permissions"
>scapi.tests.test_connect.test_setting_permissions</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_track_creation"
>scapi.tests.test_connect.test_track_creation</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_track_update"
>scapi.tests.test_connect.test_track_update</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_upload"
>scapi.tests.test_connect.test_upload</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#test_base64_connect"
>scapi.tests.test_oauth.test_base64_connect</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#test_oauth_connect"
>scapi.tests.test_oauth.test_oauth_connect</a><br /> <div class="private">
<a target="mainFrame" href="scapi.util-module.html#escape"
>scapi.util.escape</a><br /> </div>
<h2 class="toc">All Variables</h2>
<a target="mainFrame" href="scapi-module.html#ACCESS_TOKEN_URL"
>scapi.ACCESS_TOKEN_URL</a><br /> <a target="mainFrame" href="scapi-module.html#AUTHORIZATION_URL"
>scapi.AUTHORIZATION_URL</a><br /> <a target="mainFrame" href="scapi-module.html#PROXY"
>scapi.PROXY</a><br /> <a target="mainFrame" href="scapi-module.html#REQUEST_TOKEN_URL"
>scapi.REQUEST_TOKEN_URL</a><br /> <a target="mainFrame" href="scapi-module.html#USE_PROXY"
>scapi.USE_PROXY</a><br /> <div class="private">
<a target="mainFrame" href="scapi.authentication-module.html#USE_DOUBLE_ESCAPE_HACK"
>scapi.authentication.USE_DOUBLE_ESCAPE_HACK</a><br /> </div>
<div class="private">
<a target="mainFrame" href="scapi.authentication-module.html#logger"
>scapi.authentication.logger</a><br /> </div>
<div class="private">
<a target="mainFrame" href="scapi-module.html#logger"
>scapi.logger</a><br /> </div>
<a target="mainFrame" href="scapi.tests.scapi_tests-module.html#api_logger"
>scapi.tests.scapi_tests.api_logger</a><br /> <a target="mainFrame" href="scapi.tests.scapi_tests-module.html#logger"
>scapi.tests.scapi_tests.logger</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#API_HOST"
>scapi.tests.test_connect.API_HOST</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#CONFIG_NAME"
>scapi.tests.test_connect.CONFIG_NAME</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#CONNECTOR"
>scapi.tests.test_connect.CONNECTOR</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#CONSUMER"
>scapi.tests.test_connect.CONSUMER</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#CONSUMER_SECRET"
>scapi.tests.test_connect.CONSUMER_SECRET</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#PASSWORD"
>scapi.tests.test_connect.PASSWORD</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#ROOT"
>scapi.tests.test_connect.ROOT</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#RUN_INTERACTIVE_TESTS"
>scapi.tests.test_connect.RUN_INTERACTIVE_TESTS</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#SECRET"
>scapi.tests.test_connect.SECRET</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#TOKEN"
>scapi.tests.test_connect.TOKEN</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#USER"
>scapi.tests.test_connect.USER</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#USE_OAUTH"
>scapi.tests.test_connect.USE_OAUTH</a><br /> <div class="private">
<a target="mainFrame" href="scapi.tests.test_connect-module.html#_logger"
>scapi.tests.test_connect._logger</a><br /> </div>
<a target="mainFrame" href="scapi.tests.test_connect-module.html#logger"
>scapi.tests.test_connect.logger</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#CONSUMER"
>scapi.tests.test_oauth.CONSUMER</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#CONSUMER_SECRET"
>scapi.tests.test_oauth.CONSUMER_SECRET</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#SECRET"
>scapi.tests.test_oauth.SECRET</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#TOKEN"
>scapi.tests.test_oauth.TOKEN</a><br /> <div class="private">
<a target="mainFrame" href="scapi.tests.test_oauth-module.html#_logger"
>scapi.tests.test_oauth._logger</a><br /> </div>
<a target="mainFrame" href="scapi.tests.test_oauth-module.html#logger"
>scapi.tests.test_oauth.logger</a><br /><hr />
<span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<h1 class="toc">Module scapi</h1>
<hr />
<h2 class="toc">Classes</h2>
<div class="private">
<a target="mainFrame" href="scapi.ApiConnector-class.html"
>ApiConnector</a><br /> </div>
<a target="mainFrame" href="scapi.Comment-class.html"
>Comment</a><br /> <a target="mainFrame" href="scapi.Event-class.html"
>Event</a><br /> <a target="mainFrame" href="scapi.Group-class.html"
>Group</a><br /> <div class="private">
<a target="mainFrame" href="scapi.InvalidMethodException-class.html"
>InvalidMethodException</a><br /> </div>
<div class="private">
<a target="mainFrame" href="scapi.NoResultFromRequest-class.html"
>NoResultFromRequest</a><br /> </div>
<a target="mainFrame" href="scapi.Playlist-class.html"
>Playlist</a><br /> <div class="private">
<a target="mainFrame" href="scapi.RESTBase-class.html"
>RESTBase</a><br /> </div>
<div class="private">
<a target="mainFrame" href="scapi.SCRedirectHandler-class.html"
>SCRedirectHandler</a><br /> </div>
<div class="private">
<a target="mainFrame" href="scapi.Scope-class.html"
>Scope</a><br /> </div>
<a target="mainFrame" href="scapi.Track-class.html"
>Track</a><br /> <div class="private">
<a target="mainFrame" href="scapi.UnknownContentType-class.html"
>UnknownContentType</a><br /> </div>
<a target="mainFrame" href="scapi.User-class.html"
>User</a><br /> <h2 class="toc">Functions</h2>
<div class="private">
<a target="mainFrame" href="scapi-module.html#register_classes"
>register_classes</a><br /> </div>
<h2 class="toc">Variables</h2>
<a target="mainFrame" href="scapi-module.html#ACCESS_TOKEN_URL"
>ACCESS_TOKEN_URL</a><br /> <a target="mainFrame" href="scapi-module.html#AUTHORIZATION_URL"
>AUTHORIZATION_URL</a><br /> <a target="mainFrame" href="scapi-module.html#PROXY"
>PROXY</a><br /> <a target="mainFrame" href="scapi-module.html#REQUEST_TOKEN_URL"
>REQUEST_TOKEN_URL</a><br /> <a target="mainFrame" href="scapi-module.html#USE_PROXY"
>USE_PROXY</a><br /> <div class="private">
<a target="mainFrame" href="scapi-module.html#logger"
>logger</a><br /> </div>
<hr />
<span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>authentication</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<h1 class="toc">Module authentication</h1>
<hr />
<h2 class="toc">Classes</h2>
<div class="private">
<a target="mainFrame" href="scapi.authentication.BasicAuthenticator-class.html"
>BasicAuthenticator</a><br /> </div>
<div class="private">
<a target="mainFrame" href="scapi.authentication.OAuthAuthenticator-class.html"
>OAuthAuthenticator</a><br /> </div>
<div class="private">
<a target="mainFrame" href="scapi.authentication.OAuthSignatureMethod_HMAC_SHA1-class.html"
>OAuthSignatureMethod_HMAC_SHA1</a><br /> </div>
<h2 class="toc">Variables</h2>
<div class="private">
<a target="mainFrame" href="scapi.authentication-module.html#USE_DOUBLE_ESCAPE_HACK"
>USE_DOUBLE_ESCAPE_HACK</a><br /> </div>
<div class="private">
<a target="mainFrame" href="scapi.authentication-module.html#logger"
>logger</a><br /> </div>
<hr />
<span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>config</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<h1 class="toc">Module config</h1>
<hr />
<hr />
<span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>json</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<h1 class="toc">Module json</h1>
<hr />
<h2 class="toc">Classes</h2>
<a target="mainFrame" href="scapi.json.JsonReader-class.html"
>JsonReader</a><br /> <a target="mainFrame" href="scapi.json.JsonWriter-class.html"
>JsonWriter</a><br /> <a target="mainFrame" href="scapi.json.ReadException-class.html"
>ReadException</a><br /> <a target="mainFrame" href="scapi.json.WriteException-class.html"
>WriteException</a><br /> <div class="private">
<a target="mainFrame" href="scapi.json._StringGenerator-class.html"
>_StringGenerator</a><br /> </div>
<h2 class="toc">Functions</h2>
<a target="mainFrame" href="scapi.json-module.html#read"
>read</a><br /> <a target="mainFrame" href="scapi.json-module.html#write"
>write</a><br /><hr />
<span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>multidict</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<h1 class="toc">Module multidict</h1>
<hr />
<hr />
<span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>tests</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<h1 class="toc">Module tests</h1>
<hr />
<hr />
<span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>scapi_tests</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<h1 class="toc">Module scapi_tests</h1>
<hr />
<h2 class="toc">Classes</h2>
<a target="mainFrame" href="scapi.tests.scapi_tests.SCAPITests-class.html"
>SCAPITests</a><br /> <h2 class="toc">Variables</h2>
<a target="mainFrame" href="scapi.tests.scapi_tests-module.html#api_logger"
>api_logger</a><br /> <a target="mainFrame" href="scapi.tests.scapi_tests-module.html#logger"
>logger</a><br /><hr />
<span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>test_connect</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<h1 class="toc">Module test_connect</h1>
<hr />
<h2 class="toc">Functions</h2>
<a target="mainFrame" href="scapi.tests.test_connect-module.html#load_config"
>load_config</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#setup"
>setup</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_access_token_acquisition"
>test_access_token_acquisition</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_connect"
>test_connect</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_contact_add_and_removal"
>test_contact_add_and_removal</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_contact_list"
>test_contact_list</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_events"
>test_events</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_favorites"
>test_favorites</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_large_list"
>test_large_list</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_load_config"
>test_load_config</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_me_having_stress"
>test_me_having_stress</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_non_global_api"
>test_non_global_api</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_permissions"
>test_permissions</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_playlists"
>test_playlists</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_scoped_track_creation"
>test_scoped_track_creation</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_setting_comments"
>test_setting_comments</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_setting_comments_the_way_shawn_says_its_correct"
>test_setting_comments_the_way_shawn_says_its_correct</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_setting_permissions"
>test_setting_permissions</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_track_creation"
>test_track_creation</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_track_update"
>test_track_update</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#test_upload"
>test_upload</a><br /> <h2 class="toc">Variables</h2>
<a target="mainFrame" href="scapi.tests.test_connect-module.html#API_HOST"
>API_HOST</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#CONFIG_NAME"
>CONFIG_NAME</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#CONNECTOR"
>CONNECTOR</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#CONSUMER"
>CONSUMER</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#CONSUMER_SECRET"
>CONSUMER_SECRET</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#PASSWORD"
>PASSWORD</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#ROOT"
>ROOT</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#RUN_INTERACTIVE_TESTS"
>RUN_INTERACTIVE_TESTS</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#SECRET"
>SECRET</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#TOKEN"
>TOKEN</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#USER"
>USER</a><br /> <a target="mainFrame" href="scapi.tests.test_connect-module.html#USE_OAUTH"
>USE_OAUTH</a><br /> <div class="private">
<a target="mainFrame" href="scapi.tests.test_connect-module.html#_logger"
>_logger</a><br /> </div>
<a target="mainFrame" href="scapi.tests.test_connect-module.html#logger"
>logger</a><br /><hr />
<span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>test_oauth</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<h1 class="toc">Module test_oauth</h1>
<hr />
<h2 class="toc">Functions</h2>
<a target="mainFrame" href="scapi.tests.test_oauth-module.html#test_base64_connect"
>test_base64_connect</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#test_oauth_connect"
>test_oauth_connect</a><br /> <h2 class="toc">Variables</h2>
<a target="mainFrame" href="scapi.tests.test_oauth-module.html#CONSUMER"
>CONSUMER</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#CONSUMER_SECRET"
>CONSUMER_SECRET</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#SECRET"
>SECRET</a><br /> <a target="mainFrame" href="scapi.tests.test_oauth-module.html#TOKEN"
>TOKEN</a><br /> <div class="private">
<a target="mainFrame" href="scapi.tests.test_oauth-module.html#_logger"
>_logger</a><br /> </div>
<a target="mainFrame" href="scapi.tests.test_oauth-module.html#logger"
>logger</a><br /><hr />
<span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>util</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<h1 class="toc">Module util</h1>
<hr />
<h2 class="toc">Classes</h2>
<div class="private">
<a target="mainFrame" href="scapi.util.MultiDict-class.html"
>MultiDict</a><br /> </div>
<h2 class="toc">Functions</h2>
<div class="private">
<a target="mainFrame" href="scapi.util-module.html#escape"
>escape</a><br /> </div>
<hr />
<span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Table of Contents</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<h1 class="toc">Table&nbsp;of&nbsp;Contents</h1>
<hr />
<a target="moduleFrame" href="toc-everything.html">Everything</a>
<br />
<h2 class="toc">Modules</h2>
<a target="moduleFrame" href="toc-scapi-module.html"
onclick="setFrame('toc-scapi-module.html','scapi-module.html');" >scapi</a><br /> <div class="private">
<a target="moduleFrame" href="toc-scapi.authentication-module.html"
onclick="setFrame('toc-scapi.authentication-module.html','scapi.authentication-module.html');" >scapi.authentication</a><br /> </div>
<a target="moduleFrame" href="toc-scapi.config-module.html"
onclick="setFrame('toc-scapi.config-module.html','scapi.config-module.html');" >scapi.config</a><br /> <a target="moduleFrame" href="toc-scapi.json-module.html"
onclick="setFrame('toc-scapi.json-module.html','scapi.json-module.html');" >scapi.json</a><br /> <a target="moduleFrame" href="toc-scapi.multidict-module.html"
onclick="setFrame('toc-scapi.multidict-module.html','scapi.multidict-module.html');" >scapi.multidict</a><br /> <a target="moduleFrame" href="toc-scapi.tests-module.html"
onclick="setFrame('toc-scapi.tests-module.html','scapi.tests-module.html');" >scapi.tests</a><br /> <a target="moduleFrame" href="toc-scapi.tests.scapi_tests-module.html"
onclick="setFrame('toc-scapi.tests.scapi_tests-module.html','scapi.tests.scapi_tests-module.html');" >scapi.tests.scapi_tests</a><br /> <a target="moduleFrame" href="toc-scapi.tests.test_connect-module.html"
onclick="setFrame('toc-scapi.tests.test_connect-module.html','scapi.tests.test_connect-module.html');" >scapi.tests.test_connect</a><br /> <a target="moduleFrame" href="toc-scapi.tests.test_oauth-module.html"
onclick="setFrame('toc-scapi.tests.test_oauth-module.html','scapi.tests.test_oauth-module.html');" >scapi.tests.test_oauth</a><br /> <div class="private">
<a target="moduleFrame" href="toc-scapi.util-module.html"
onclick="setFrame('toc-scapi.util-module.html','scapi.util-module.html');" >scapi.util</a><br /> </div>
<hr />
<span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide&nbsp;private</a>]</span>
<script type="text/javascript">
<!--
// Private objects are initially displayed (because if
// javascript is turned off then we want them to be
// visible); but by default, we want to hide them. So hide
// them unless we have a cookie that says to show them.
checkCookie();
// -->
</script>
</body>
</html>

View File

@ -0,0 +1,157 @@
'''
Example consumer.
'''
import httplib
import time
import oauth.oauth as oauth
import webbrowser
from scapi import util
SERVER = 'sandbox-soundcloud.com' # Change to soundcloud.com to reach the live site
PORT = 80
REQUEST_TOKEN_URL = 'http://api.' + SERVER + '/oauth/request_token'
ACCESS_TOKEN_URL = 'http://api.' + SERVER + '/oauth/access_token'
AUTHORIZATION_URL = 'http://' + SERVER + '/oauth/authorize'
CALLBACK_URL = ''
RESOURCE_URL = "http://api." + SERVER + "/me"
# key and secret granted by the service provider for this consumer application - same as the MockOAuthDataStore
CONSUMER_KEY = 'JysXkO8ErA4EluFnF5nWg'
CONSUMER_SECRET = 'fauVjm61niGckeufkmMvgUo77oWzRHdMmeylJblHk'
# example client using httplib with headers
class SimpleOAuthClient(oauth.OAuthClient):
def __init__(self, server, port=httplib.HTTP_PORT, request_token_url='', access_token_url='', authorization_url=''):
self.server = server
self.port = port
self.request_token_url = request_token_url
self.access_token_url = access_token_url
self.authorization_url = authorization_url
self.connection = httplib.HTTPConnection("%s:%d" % (self.server, self.port))
def fetch_request_token(self, oauth_request):
# via headers
# -> OAuthToken
print oauth_request.to_url()
#self.connection.request(oauth_request.http_method, self.request_token_url, headers=oauth_request.to_header())
self.connection.request(oauth_request.http_method, oauth_request.to_url())
response = self.connection.getresponse()
print "response status", response.status
return oauth.OAuthToken.from_string(response.read())
def fetch_access_token(self, oauth_request):
# via headers
# -> OAuthToken
# This should proably be elsewhere but stays here for now
oauth_request.set_parameter("oauth_signature", util.escape(oauth_request.get_parameter("oauth_signature")))
self.connection.request(oauth_request.http_method, self.access_token_url, headers=oauth_request.to_header())
response = self.connection.getresponse()
resp = response.read()
print "*" * 90
print "response:", resp
print "*" * 90
return oauth.OAuthToken.from_string(resp)
def authorize_token(self, oauth_request):
webbrowser.open(oauth_request.to_url())
raw_input("press return when authorizing is finished")
return
# via url
# -> typically just some okay response
self.connection.request(oauth_request.http_method, oauth_request.to_url())
response = self.connection.getresponse()
return response.read()
def access_resource(self, oauth_request):
print "resource url:", oauth_request.to_url()
webbrowser.open(oauth_request.to_url())
return
# via post body
# -> some protected resources
self.connection.request('GET', oauth_request.to_url())
response = self.connection.getresponse()
return response.read()
def run_example():
# setup
print '** OAuth Python Library Example **'
client = SimpleOAuthClient(SERVER, PORT, REQUEST_TOKEN_URL, ACCESS_TOKEN_URL, AUTHORIZATION_URL)
consumer = oauth.OAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET)
signature_method_plaintext = oauth.OAuthSignatureMethod_PLAINTEXT()
signature_method_hmac_sha1 = oauth.OAuthSignatureMethod_HMAC_SHA1()
pause()
# get request token
print '* Obtain a request token ...'
pause()
oauth_request = oauth.OAuthRequest.from_consumer_and_token(consumer, http_url=client.request_token_url)
#oauth_request.sign_request(signature_method_plaintext, consumer, None)
oauth_request.sign_request(signature_method_hmac_sha1, consumer, None)
print 'REQUEST (via headers)'
print 'parameters: %s' % str(oauth_request.parameters)
pause()
#import pdb; pdb.set_trace()
token = client.fetch_request_token(oauth_request)
print 'GOT'
print 'key: %s' % str(token.key)
print 'secret: %s' % str(token.secret)
pause()
print '* Authorize the request token ...'
pause()
oauth_request = oauth.OAuthRequest.from_token_and_callback(token=token, callback=CALLBACK_URL, http_url=client.authorization_url)
print 'REQUEST (via url query string)'
print 'parameters: %s' % str(oauth_request.parameters)
pause()
# this will actually occur only on some callback
response = client.authorize_token(oauth_request)
print 'GOT'
print response
pause()
# get access token
print '* Obtain an access token ...'
pause()
oauth_request = oauth.OAuthRequest.from_consumer_and_token(consumer, token=token, http_url=client.access_token_url)
oauth_request.sign_request(signature_method_hmac_sha1, consumer, token)
print 'REQUEST (via headers)'
print 'parameters: %s' % str(oauth_request.parameters)
pause()
token = client.fetch_access_token(oauth_request)
print 'GOT'
print 'key: %s' % str(token.key)
print 'secret: %s' % str(token.secret)
pause()
# access some protected resources
print '* Access protected resources ...'
pause()
parameters = {}
oauth_request = oauth.OAuthRequest.from_consumer_and_token(consumer, token=token, http_method='GET', http_url=RESOURCE_URL, parameters=parameters)
oauth_request.sign_request(signature_method_hmac_sha1, consumer, token)
print 'REQUEST (via get body)'
print 'parameters: %s' % str(oauth_request.parameters)
pause()
params = client.access_resource(oauth_request)
print 'GOT'
print 'non-oauth parameters: %s' % params
pause()
def pause():
print ''
time.sleep(1)
if __name__ == '__main__':
run_example()
print 'Done.'

View File

@ -0,0 +1,167 @@
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import urllib
import oauth.oauth as oauth
REQUEST_TOKEN_URL = 'https://photos.example.net/request_token'
ACCESS_TOKEN_URL = 'https://photos.example.net/access_token'
AUTHORIZATION_URL = 'https://photos.example.net/authorize'
RESOURCE_URL = 'http://photos.example.net/photos'
REALM = 'http://photos.example.net/'
# example store for one of each thing
class MockOAuthDataStore(oauth.OAuthDataStore):
def __init__(self):
self.consumer = oauth.OAuthConsumer('key', 'secret')
self.request_token = oauth.OAuthToken('requestkey', 'requestsecret')
self.access_token = oauth.OAuthToken('accesskey', 'accesssecret')
self.nonce = 'nonce'
def lookup_consumer(self, key):
if key == self.consumer.key:
return self.consumer
return None
def lookup_token(self, token_type, token):
token_attrib = getattr(self, '%s_token' % token_type)
if token == token_attrib.key:
return token_attrib
return None
def lookup_nonce(self, oauth_consumer, oauth_token, nonce):
if oauth_token and oauth_consumer.key == self.consumer.key and (oauth_token.key == self.request_token.key or token.key == self.access_token.key) and nonce == self.nonce:
return self.nonce
else:
raise oauth.OAuthError('Nonce not found: %s' % str(nonce))
return None
def fetch_request_token(self, oauth_consumer):
if oauth_consumer.key == self.consumer.key:
return self.request_token
return None
def fetch_access_token(self, oauth_consumer, oauth_token):
if oauth_consumer.key == self.consumer.key and oauth_token.key == self.request_token.key:
# want to check here if token is authorized
# for mock store, we assume it is
return self.access_token
return None
def authorize_request_token(self, oauth_token):
if oauth_token.key == self.request_token.key:
# authorize the request token in the store
# for mock store, do nothing
return self.request_token
return None
class RequestHandler(BaseHTTPRequestHandler):
def __init__(self, *args, **kwargs):
self.oauth_server = oauth.OAuthServer(MockOAuthDataStore())
self.oauth_server.add_signature_method(oauth.OAuthSignatureMethod_PLAINTEXT())
self.oauth_server.add_signature_method(oauth.OAuthSignatureMethod_HMAC_SHA1())
BaseHTTPRequestHandler.__init__(self, *args, **kwargs)
# example way to send an oauth error
def send_oauth_error(self, err=None):
# send a 401 error
self.send_error(401, str(err.message))
# return the authenticate header
header = oauth.build_authenticate_header(realm=REALM)
for k, v in header.iteritems():
self.send_header(k, v)
def do_GET(self):
# debug info
#print self.command, self.path, self.headers
# get the post data (if any)
postdata = None
if self.command == 'POST':
try:
length = int(self.headers.getheader('content-length'))
postdata = self.rfile.read(length)
except:
pass
# construct the oauth request from the request parameters
oauth_request = oauth.OAuthRequest.from_request(self.command, self.path, headers=self.headers, postdata=postdata)
# request token
if self.path.startswith(REQUEST_TOKEN_URL):
try:
# create a request token
token = self.oauth_server.fetch_request_token(oauth_request)
# send okay response
self.send_response(200, 'OK')
self.end_headers()
# return the token
self.wfile.write(token.to_string())
except oauth.OAuthError, err:
self.send_oauth_error(err)
return
# user authorization
if self.path.startswith(AUTHORIZATION_URL):
try:
# get the request token
token = self.oauth_server.fetch_request_token(oauth_request)
callback = self.oauth_server.get_callback(oauth_request)
# send okay response
self.send_response(200, 'OK')
self.end_headers()
# return the callback url (to show server has it)
self.wfile.write('callback: %s' %callback)
# authorize the token (kind of does nothing for now)
token = self.oauth_server.authorize_token(token)
self.wfile.write('\n')
# return the token key
token_key = urllib.urlencode({'oauth_token': token.key})
self.wfile.write('token key: %s' % token_key)
except oauth.OAuthError, err:
self.send_oauth_error(err)
return
# access token
if self.path.startswith(ACCESS_TOKEN_URL):
try:
# create an access token
token = self.oauth_server.fetch_access_token(oauth_request)
# send okay response
self.send_response(200, 'OK')
self.end_headers()
# return the token
self.wfile.write(token.to_string())
except oauth.OAuthError, err:
self.send_oauth_error(err)
return
# protected resources
if self.path.startswith(RESOURCE_URL):
try:
# verify the request has been oauth authorized
consumer, token, params = self.oauth_server.verify_request(oauth_request)
# send okay response
self.send_response(200, 'OK')
self.end_headers()
# return the extra parameters - just for something to return
self.wfile.write(str(params))
except oauth.OAuthError, err:
self.send_oauth_error(err)
return
def do_POST(self):
return self.do_GET()
def main():
try:
server = HTTPServer(('', 8080), RequestHandler)
print 'Test server running...'
server.serve_forever()
except KeyboardInterrupt:
server.socket.close()
if __name__ == '__main__':
main()

View File

@ -0,0 +1,505 @@
import cgi
import urllib
import time
import random
import urlparse
import hmac
import hashlib
import base64
VERSION = '1.0' # Hi Blaine!
HTTP_METHOD = 'GET'
SIGNATURE_METHOD = 'PLAINTEXT'
# Generic exception class
class OAuthError(RuntimeError):
def __init__(self, message='OAuth error occured'):
self.message = message
# optional WWW-Authenticate header (401 error)
def build_authenticate_header(realm=''):
return {'WWW-Authenticate': 'OAuth realm="%s"' % realm}
# url escape
def escape(s):
# escape '/' too
return urllib.quote(s, safe='')
# util function: current timestamp
# seconds since epoch (UTC)
def generate_timestamp():
return int(time.time())
# util function: nonce
# pseudorandom number
def generate_nonce(length=8):
return ''.join(str(random.randint(0, 9)) for i in range(length))
# OAuthConsumer is a data type that represents the identity of the Consumer
# via its shared secret with the Service Provider.
class OAuthConsumer(object):
key = None
secret = None
def __init__(self, key, secret):
self.key = key
self.secret = secret
# OAuthToken is a data type that represents an End User via either an access
# or request token.
class OAuthToken(object):
# access tokens and request tokens
key = None
secret = None
'''
key = the token
secret = the token secret
'''
def __init__(self, key, secret):
self.key = key
self.secret = secret
def to_string(self):
return urllib.urlencode({'oauth_token': self.key, 'oauth_token_secret': self.secret})
# return a token from something like:
# oauth_token_secret=digg&oauth_token=digg
@staticmethod
def from_string(s):
params = cgi.parse_qs(s, keep_blank_values=False)
key = params['oauth_token'][0]
secret = params['oauth_token_secret'][0]
return OAuthToken(key, secret)
def __str__(self):
return self.to_string()
# OAuthRequest represents the request and can be serialized
class OAuthRequest(object):
'''
OAuth parameters:
- oauth_consumer_key
- oauth_token
- oauth_signature_method
- oauth_signature
- oauth_timestamp
- oauth_nonce
- oauth_version
... any additional parameters, as defined by the Service Provider.
'''
parameters = None # oauth parameters
http_method = HTTP_METHOD
http_url = None
version = VERSION
def __init__(self, http_method=HTTP_METHOD, http_url=None, parameters=None):
self.http_method = http_method
self.http_url = http_url
self.parameters = parameters or {}
def set_parameter(self, parameter, value):
self.parameters[parameter] = value
def get_parameter(self, parameter):
try:
return self.parameters[parameter]
except:
raise OAuthError('Parameter not found: %s' % parameter)
def _get_timestamp_nonce(self):
return self.get_parameter('oauth_timestamp'), self.get_parameter('oauth_nonce')
# get any non-oauth parameters
def get_nonoauth_parameters(self):
parameters = {}
for k, v in self.parameters.iteritems():
# ignore oauth parameters
if k.find('oauth_') < 0:
parameters[k] = v
return parameters
# serialize as a header for an HTTPAuth request
def to_header(self, realm=''):
auth_header = 'OAuth realm="%s"' % realm
# add the oauth parameters
if self.parameters:
for k, v in self.parameters.iteritems():
auth_header += ',\n\t %s="%s"' % (k, v)
return {'Authorization': auth_header}
# serialize as post data for a POST request
def to_postdata(self):
return '&'.join('%s=%s' % (escape(str(k)), escape(str(v))) for k, v in self.parameters.iteritems())
# serialize as a url for a GET request
def to_url(self):
return '%s?%s' % (self.get_normalized_http_url(), self.to_postdata())
# return a string that consists of all the parameters that need to be signed
def get_normalized_parameters(self):
params = self.parameters
try:
# exclude the signature if it exists
del params['oauth_signature']
except:
pass
key_values = params.items()
# sort lexicographically, first after key, then after value
key_values.sort()
# combine key value pairs in string and escape
return '&'.join('%s=%s' % (str(k), str(p)) for k, p in key_values)
# just uppercases the http method
def get_normalized_http_method(self):
return self.http_method.upper()
# parses the url and rebuilds it to be scheme://host/path
def get_normalized_http_url(self):
parts = urlparse.urlparse(self.http_url)
url_string = '%s://%s%s' % (parts.scheme, parts.netloc, parts.path)
return url_string
# set the signature parameter to the result of build_signature
def sign_request(self, signature_method, consumer, token):
# set the signature method
self.set_parameter('oauth_signature_method', signature_method.get_name())
# set the signature
self.set_parameter('oauth_signature', self.build_signature(signature_method, consumer, token))
def build_signature(self, signature_method, consumer, token):
# call the build signature method within the signature method
return signature_method.build_signature(self, consumer, token)
@staticmethod
def from_request(http_method, http_url, headers=None, postdata=None, parameters=None):
# let the library user override things however they'd like, if they know
# which parameters to use then go for it, for example XMLRPC might want to
# do this
if parameters is not None:
return OAuthRequest(http_method, http_url, parameters)
# from the headers
if headers is not None:
try:
auth_header = headers['Authorization']
# check that the authorization header is OAuth
auth_header.index('OAuth')
# get the parameters from the header
parameters = OAuthRequest._split_header(auth_header)
return OAuthRequest(http_method, http_url, parameters)
except:
pass
# from the parameter string (post body)
if http_method == 'POST' and postdata is not None:
parameters = OAuthRequest._split_url_string(postdata)
# from the url string
elif http_method == 'GET':
param_str = urlparse.urlparse(http_url).query
parameters = OAuthRequest._split_url_string(param_str)
if parameters:
return OAuthRequest(http_method, http_url, parameters)
raise OAuthError('Missing all OAuth parameters. OAuth parameters must be in the headers, post body, or url.')
@staticmethod
def from_consumer_and_token(oauth_consumer, token=None, http_method=HTTP_METHOD, http_url=None, parameters=None):
if not parameters:
parameters = {}
defaults = {
'oauth_consumer_key': oauth_consumer.key,
'oauth_timestamp': generate_timestamp(),
'oauth_nonce': generate_nonce(),
'oauth_version': OAuthRequest.version,
}
defaults.update(parameters)
parameters = defaults
if token:
parameters['oauth_token'] = token.key
return OAuthRequest(http_method, http_url, parameters)
@staticmethod
def from_token_and_callback(token, callback=None, http_method=HTTP_METHOD, http_url=None, parameters=None):
if not parameters:
parameters = {}
parameters['oauth_token'] = token.key
if callback:
parameters['oauth_callback'] = escape(callback)
return OAuthRequest(http_method, http_url, parameters)
# util function: turn Authorization: header into parameters, has to do some unescaping
@staticmethod
def _split_header(header):
params = {}
parts = header.split(',')
for param in parts:
# ignore realm parameter
if param.find('OAuth realm') > -1:
continue
# remove whitespace
param = param.strip()
# split key-value
param_parts = param.split('=', 1)
# remove quotes and unescape the value
params[param_parts[0]] = urllib.unquote(param_parts[1].strip('\"'))
return params
# util function: turn url string into parameters, has to do some unescaping
@staticmethod
def _split_url_string(param_str):
parameters = cgi.parse_qs(param_str, keep_blank_values=False)
for k, v in parameters.iteritems():
parameters[k] = urllib.unquote(v[0])
return parameters
# OAuthServer is a worker to check a requests validity against a data store
class OAuthServer(object):
timestamp_threshold = 300 # in seconds, five minutes
version = VERSION
signature_methods = None
data_store = None
def __init__(self, data_store=None, signature_methods=None):
self.data_store = data_store
self.signature_methods = signature_methods or {}
def set_data_store(self, oauth_data_store):
self.data_store = data_store
def get_data_store(self):
return self.data_store
def add_signature_method(self, signature_method):
self.signature_methods[signature_method.get_name()] = signature_method
return self.signature_methods
# process a request_token request
# returns the request token on success
def fetch_request_token(self, oauth_request):
try:
# get the request token for authorization
token = self._get_token(oauth_request, 'request')
except:
# no token required for the initial token request
version = self._get_version(oauth_request)
consumer = self._get_consumer(oauth_request)
self._check_signature(oauth_request, consumer, None)
# fetch a new token
token = self.data_store.fetch_request_token(consumer)
return token
# process an access_token request
# returns the access token on success
def fetch_access_token(self, oauth_request):
version = self._get_version(oauth_request)
consumer = self._get_consumer(oauth_request)
# get the request token
token = self._get_token(oauth_request, 'request')
self._check_signature(oauth_request, consumer, token)
new_token = self.data_store.fetch_access_token(consumer, token)
return new_token
# verify an api call, checks all the parameters
def verify_request(self, oauth_request):
# -> consumer and token
version = self._get_version(oauth_request)
consumer = self._get_consumer(oauth_request)
# get the access token
token = self._get_token(oauth_request, 'access')
self._check_signature(oauth_request, consumer, token)
parameters = oauth_request.get_nonoauth_parameters()
return consumer, token, parameters
# authorize a request token
def authorize_token(self, token):
return self.data_store.authorize_request_token(token)
# get the callback url
def get_callback(self, oauth_request):
return oauth_request.get_parameter('oauth_callback')
# optional support for the authenticate header
def build_authenticate_header(self, realm=''):
return {'WWW-Authenticate': 'OAuth realm="%s"' % realm}
# verify the correct version request for this server
def _get_version(self, oauth_request):
try:
version = oauth_request.get_parameter('oauth_version')
except:
version = VERSION
if version and version != self.version:
raise OAuthError('OAuth version %s not supported' % str(version))
return version
# figure out the signature with some defaults
def _get_signature_method(self, oauth_request):
try:
signature_method = oauth_request.get_parameter('oauth_signature_method')
except:
signature_method = SIGNATURE_METHOD
try:
# get the signature method object
signature_method = self.signature_methods[signature_method]
except:
signature_method_names = ', '.join(self.signature_methods.keys())
raise OAuthError('Signature method %s not supported try one of the following: %s' % (signature_method, signature_method_names))
return signature_method
def _get_consumer(self, oauth_request):
consumer_key = oauth_request.get_parameter('oauth_consumer_key')
if not consumer_key:
raise OAuthError('Invalid consumer key')
consumer = self.data_store.lookup_consumer(consumer_key)
if not consumer:
raise OAuthError('Invalid consumer')
return consumer
# try to find the token for the provided request token key
def _get_token(self, oauth_request, token_type='access'):
token_field = oauth_request.get_parameter('oauth_token')
token = self.data_store.lookup_token(token_type, token_field)
if not token:
raise OAuthError('Invalid %s token: %s' % (token_type, token_field))
return token
def _check_signature(self, oauth_request, consumer, token):
timestamp, nonce = oauth_request._get_timestamp_nonce()
self._check_timestamp(timestamp)
self._check_nonce(consumer, token, nonce)
signature_method = self._get_signature_method(oauth_request)
try:
signature = oauth_request.get_parameter('oauth_signature')
except:
raise OAuthError('Missing signature')
# attempt to construct the same signature
built = signature_method.build_signature(oauth_request, consumer, token)
if signature != built:
raise OAuthError('Invalid signature')
def _check_timestamp(self, timestamp):
# verify that timestamp is recentish
timestamp = int(timestamp)
now = int(time.time())
lapsed = now - timestamp
if lapsed > self.timestamp_threshold:
raise OAuthError('Expired timestamp: given %d and now %s has a greater difference than threshold %d' % (timestamp, now, self.timestamp_threshold))
def _check_nonce(self, consumer, token, nonce):
# verify that the nonce is uniqueish
try:
self.data_store.lookup_nonce(consumer, token, nonce)
raise OAuthError('Nonce already used: %s' % str(nonce))
except:
pass
# OAuthClient is a worker to attempt to execute a request
class OAuthClient(object):
consumer = None
token = None
def __init__(self, oauth_consumer, oauth_token):
self.consumer = oauth_consumer
self.token = oauth_token
def get_consumer(self):
return self.consumer
def get_token(self):
return self.token
def fetch_request_token(self, oauth_request):
# -> OAuthToken
raise NotImplementedError
def fetch_access_token(self, oauth_request):
# -> OAuthToken
raise NotImplementedError
def access_resource(self, oauth_request):
# -> some protected resource
raise NotImplementedError
# OAuthDataStore is a database abstraction used to lookup consumers and tokens
class OAuthDataStore(object):
def lookup_consumer(self, key):
# -> OAuthConsumer
raise NotImplementedError
def lookup_token(self, oauth_consumer, token_type, token_token):
# -> OAuthToken
raise NotImplementedError
def lookup_nonce(self, oauth_consumer, oauth_token, nonce, timestamp):
# -> OAuthToken
raise NotImplementedError
def fetch_request_token(self, oauth_consumer):
# -> OAuthToken
raise NotImplementedError
def fetch_access_token(self, oauth_consumer, oauth_token):
# -> OAuthToken
raise NotImplementedError
def authorize_request_token(self, oauth_token):
# -> OAuthToken
raise NotImplementedError
# OAuthSignatureMethod is a strategy class that implements a signature method
class OAuthSignatureMethod(object):
def get_name():
# -> str
raise NotImplementedError
def build_signature(oauth_request, oauth_consumer, oauth_token):
# -> str
raise NotImplementedError
class OAuthSignatureMethod_HMAC_SHA1(OAuthSignatureMethod):
def get_name(self):
return 'HMAC-SHA1'
def build_signature(self, oauth_request, consumer, token):
sig = (
escape(oauth_request.get_normalized_http_method()),
escape(oauth_request.get_normalized_http_url()),
escape(oauth_request.get_normalized_parameters()),
)
key = '%s&' % consumer.secret
if token:
key += token.secret
raw = '&'.join(sig)
# hmac object
hashed = hmac.new(key, raw, hashlib.sha1)
# calculate the digest base 64
return base64.b64encode(hashed.digest())
class OAuthSignatureMethod_PLAINTEXT(OAuthSignatureMethod):
def get_name(self):
return 'PLAINTEXT'
def build_signature(self, oauth_request, consumer, token):
# concatenate the consumer key and secret
sig = escape(consumer.secret)
if token:
sig = '&'.join((sig, escape(token.secret)))
return sig

View File

@ -0,0 +1,135 @@
#!/usr/bin/python
####
# 02/2006 Will Holcomb <wholcomb@gmail.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
"""
Usage:
Enables the use of multipart/form-data for posting forms
Inspirations:
Upload files in python:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/146306
urllib2_file:
Fabien Seisen: <fabien@seisen.org>
Example:
import MultipartPostHandler, urllib2, cookielib
cookies = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies),
MultipartPostHandler.MultipartPostHandler)
params = { "username" : "bob", "password" : "riviera",
"file" : open("filename", "rb") }
opener.open("http://wwww.bobsite.com/upload/", params)
Further Example:
The main function of this file is a sample which downloads a page and
then uploads it to the W3C validator.
"""
import urllib
import urllib2
import mimetools, mimetypes
import os, stat
class Callable:
def __init__(self, anycallable):
self.__call__ = anycallable
# Controls how sequences are uncoded. If true, elements may be given multiple values by
# assigning a sequence.
doseq = 1
class MultipartPostHandler(urllib2.BaseHandler):
handler_order = urllib2.HTTPHandler.handler_order - 10 # needs to run first
def http_request(self, request):
data = request.get_data()
if data is not None and type(data) != str:
v_files = []
v_vars = []
try:
for(key, value) in data.items():
if type(value) == file:
v_files.append((key, value))
else:
v_vars.append((key, value))
except TypeError:
systype, value, traceback = sys.exc_info()
raise TypeError, "not a valid non-string sequence or mapping object", traceback
if len(v_files) == 0:
data = urllib.urlencode(v_vars, doseq)
else:
boundary, data = self.multipart_encode(v_vars, v_files)
contenttype = 'multipart/form-data; boundary=%s' % boundary
if(request.has_header('Content-Type')
and request.get_header('Content-Type').find('multipart/form-data') != 0):
print "Replacing %s with %s" % (request.get_header('content-type'), 'multipart/form-data')
request.add_unredirected_header('Content-Type', contenttype)
request.add_data(data)
return request
def multipart_encode(vars, files, boundary = None, buffer = None):
if boundary is None:
boundary = mimetools.choose_boundary()
if buffer is None:
buffer = ''
for(key, value) in vars:
if isinstance(value, basestring):
value = [value]
for sub_value in value:
buffer += '--%s\r\n' % boundary
buffer += 'Content-Disposition: form-data; name="%s"' % key
buffer += '\r\n\r\n' + sub_value + '\r\n'
for(key, fd) in files:
file_size = os.fstat(fd.fileno())[stat.ST_SIZE]
filename = fd.name.split('/')[-1]
contenttype = mimetypes.guess_type(filename)[0] or 'application/octet-stream'
buffer += '--%s\r\n' % boundary
buffer += 'Content-Disposition: form-data; name="%s"; filename="%s"\r\n' % (key, filename)
buffer += 'Content-Type: %s\r\n' % contenttype
# buffer += 'Content-Length: %s\r\n' % file_size
fd.seek(0)
buffer += '\r\n' + fd.read() + '\r\n'
buffer += '--%s--\r\n\r\n' % boundary
return boundary, buffer
multipart_encode = Callable(multipart_encode)
https_request = http_request
def main():
import tempfile, sys
validatorURL = "http://validator.w3.org/check"
opener = urllib2.build_opener(MultipartPostHandler)
def validateFile(url):
temp = tempfile.mkstemp(suffix=".html")
os.write(temp[0], opener.open(url).read())
params = { "ss" : "0", # show source
"doctype" : "Inline",
"uploaded_file" : open(temp[1], "rb") }
print opener.open(validatorURL, params).read()
os.remove(temp[1])
if len(sys.argv[1:]) > 0:
for arg in sys.argv[1:]:
validateFile(arg)
else:
validateFile("http://www.google.com")
if __name__=="__main__":
main()

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,195 @@
## SouncCloudAPI implements a Python wrapper around the SoundCloud RESTful
## API
##
## Copyright (C) 2008 Diez B. Roggisch
## Contact mailto:deets@soundcloud.com
##
## This library is free software; you can redistribute it and/or
## modify it under the terms of the GNU Lesser General Public
## License as published by the Free Software Foundation; either
## version 2.1 of the License, or (at your option) any later version.
##
## This library is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
## Lesser General Public License for more details.
##
## You should have received a copy of the GNU Lesser General Public
## License along with this library; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
import base64
import time, random
import urlparse
import hmac
import hashlib
from scapi.util import escape
import logging
USE_DOUBLE_ESCAPE_HACK = True
"""
There seems to be an uncertainty on the way
parameters are to be escaped. For now, this
variable switches between two escaping mechanisms.
If True, the passed parameters - GET or POST - are
escaped *twice*.
"""
logger = logging.getLogger(__name__)
class OAuthSignatureMethod_HMAC_SHA1(object):
FORBIDDEN = ['realm', 'oauth_signature']
def get_name(self):
return 'HMAC-SHA1'
def build_signature(self, request, parameters, consumer_secret, token_secret, oauth_parameters):
if logger.level == logging.DEBUG:
logger.debug("request: %r", request)
logger.debug("parameters: %r", parameters)
logger.debug("consumer_secret: %r", consumer_secret)
logger.debug("token_secret: %r", token_secret)
logger.debug("oauth_parameters: %r", oauth_parameters)
temp = {}
temp.update(oauth_parameters)
for p in self.FORBIDDEN:
if p in temp:
del temp[p]
if parameters is not None:
temp.update(parameters)
sig = (
escape(self.get_normalized_http_method(request)),
escape(self.get_normalized_http_url(request)),
self.get_normalized_parameters(temp), # these are escaped in the method already
)
key = '%s&' % consumer_secret
if token_secret is not None:
key += token_secret
raw = '&'.join(sig)
logger.debug("raw basestring: %s", raw)
logger.debug("key: %s", key)
# hmac object
hashed = hmac.new(key, raw, hashlib.sha1)
# calculate the digest base 64
signature = escape(base64.b64encode(hashed.digest()))
return signature
def get_normalized_http_method(self, request):
return request.get_method().upper()
# parses the url and rebuilds it to be scheme://host/path
def get_normalized_http_url(self, request):
url = request.get_full_url()
parts = urlparse.urlparse(url)
url_string = '%s://%s%s' % (parts.scheme, parts.netloc, parts.path)
return url_string
def get_normalized_parameters(self, params):
if params is None:
params = {}
try:
# exclude the signature if it exists
del params['oauth_signature']
except:
pass
key_values = []
for key, values in params.iteritems():
if isinstance(values, file):
continue
if isinstance(values, (int, long, float)):
values = str(values)
if isinstance(values, (list, tuple)):
values = [str(v) for v in values]
if isinstance(values, basestring):
values = [values]
if USE_DOUBLE_ESCAPE_HACK and not key.startswith("ouath"):
key = escape(key)
for v in values:
v = v.encode("utf-8")
key = key.encode("utf-8")
if USE_DOUBLE_ESCAPE_HACK and not key.startswith("oauth"):
# this is a dirty hack to make the
# thing work with the current server-side
# implementation. Or is it by spec?
v = escape(v)
key_values.append(escape("%s=%s" % (key, v)))
# sort lexicographically, first after key, then after value
key_values.sort()
# combine key value pairs in string
return escape('&').join(key_values)
class OAuthAuthenticator(object):
OAUTH_API_VERSION = '1.0'
AUTHORIZATION_HEADER = "Authorization"
def __init__(self, consumer=None, consumer_secret=None, token=None, secret=None, signature_method=OAuthSignatureMethod_HMAC_SHA1()):
if consumer == None:
raise ValueError("The consumer key must be passed for all public requests; it may not be None")
self._consumer, self._token, self._secret = consumer, token, secret
self._consumer_secret = consumer_secret
self._signature_method = signature_method
random.seed()
def augment_request(self, req, parameters, use_multipart=False, oauth_callback=None, oauth_verifier=None):
oauth_parameters = {
'oauth_consumer_key': self._consumer,
'oauth_timestamp': self.generate_timestamp(),
'oauth_nonce': self.generate_nonce(),
'oauth_version': self.OAUTH_API_VERSION,
'oauth_signature_method': self._signature_method.get_name(),
#'realm' : "http://soundcloud.com",
}
if self._token is not None:
oauth_parameters['oauth_token'] = self._token
if oauth_callback is not None:
oauth_parameters['oauth_callback'] = oauth_callback
if oauth_verifier is not None:
oauth_parameters['oauth_verifier'] = oauth_verifier
# in case we upload large files, we don't
# sign the request over the parameters
# There's a bug in the OAuth 1.0 (and a) specs that says that PUT request should omit parameters from the base string.
# This is fixed in the IETF draft, don't know when this will be released though. - HT
if use_multipart or req.get_method() == 'PUT':
parameters = None
oauth_parameters['oauth_signature'] = self._signature_method.build_signature(req,
parameters,
self._consumer_secret,
self._secret,
oauth_parameters)
def to_header(d):
return ",".join('%s="%s"' % (key, value) for key, value in sorted(oauth_parameters.items()))
req.add_header(self.AUTHORIZATION_HEADER, "OAuth %s" % to_header(oauth_parameters))
def generate_timestamp(self):
return int(time.time())# * 1000.0)
def generate_nonce(self, length=8):
return ''.join(str(random.randint(0, 9)) for i in range(length))
class BasicAuthenticator(object):
def __init__(self, user, password, consumer, consumer_secret):
self._base64string = base64.encodestring("%s:%s" % (user, password))[:-1]
self._x_auth_header = 'OAuth oauth_consumer_key="%s" oauth_consumer_secret="%s"' % (consumer, consumer_secret)
def augment_request(self, req, parameters):
req.add_header("Authorization", "Basic %s" % self._base64string)
req.add_header("X-Authorization", self._x_auth_header)

View File

@ -0,0 +1,2 @@

View File

@ -0,0 +1,310 @@
import string
import types
## json.py implements a JSON (http://json.org) reader and writer.
## Copyright (C) 2005 Patrick D. Logan
## Contact mailto:patrickdlogan@stardecisions.com
##
## This library is free software; you can redistribute it and/or
## modify it under the terms of the GNU Lesser General Public
## License as published by the Free Software Foundation; either
## version 2.1 of the License, or (at your option) any later version.
##
## This library is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
## Lesser General Public License for more details.
##
## You should have received a copy of the GNU Lesser General Public
## License along with this library; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
class _StringGenerator(object):
def __init__(self, string):
self.string = string
self.index = -1
def peek(self):
i = self.index + 1
if i < len(self.string):
return self.string[i]
else:
return None
def next(self):
self.index += 1
if self.index < len(self.string):
return self.string[self.index]
else:
raise StopIteration
def all(self):
return self.string
class WriteException(Exception):
pass
class ReadException(Exception):
pass
class JsonReader(object):
hex_digits = {'A': 10,'B': 11,'C': 12,'D': 13,'E': 14,'F':15}
escapes = {'t':'\t','n':'\n','f':'\f','r':'\r','b':'\b'}
def read(self, s):
self._generator = _StringGenerator(s)
result = self._read()
return result
def _read(self):
self._eatWhitespace()
peek = self._peek()
if peek is None:
raise ReadException, "Nothing to read: '%s'" % self._generator.all()
if peek == '{':
return self._readObject()
elif peek == '[':
return self._readArray()
elif peek == '"':
return self._readString()
elif peek == '-' or peek.isdigit():
return self._readNumber()
elif peek == 't':
return self._readTrue()
elif peek == 'f':
return self._readFalse()
elif peek == 'n':
return self._readNull()
elif peek == '/':
self._readComment()
return self._read()
else:
raise ReadException, "Input is not valid JSON: '%s'" % self._generator.all()
def _readTrue(self):
self._assertNext('t', "true")
self._assertNext('r', "true")
self._assertNext('u', "true")
self._assertNext('e', "true")
return True
def _readFalse(self):
self._assertNext('f', "false")
self._assertNext('a', "false")
self._assertNext('l', "false")
self._assertNext('s', "false")
self._assertNext('e', "false")
return False
def _readNull(self):
self._assertNext('n', "null")
self._assertNext('u', "null")
self._assertNext('l', "null")
self._assertNext('l', "null")
return None
def _assertNext(self, ch, target):
if self._next() != ch:
raise ReadException, "Trying to read %s: '%s'" % (target, self._generator.all())
def _readNumber(self):
isfloat = False
result = self._next()
peek = self._peek()
while peek is not None and (peek.isdigit() or peek == "."):
isfloat = isfloat or peek == "."
result = result + self._next()
peek = self._peek()
try:
if isfloat:
return float(result)
else:
return int(result)
except ValueError:
raise ReadException, "Not a valid JSON number: '%s'" % result
def _readString(self):
result = ""
assert self._next() == '"'
try:
while self._peek() != '"':
ch = self._next()
if ch == "\\":
ch = self._next()
if ch in 'brnft':
ch = self.escapes[ch]
elif ch == "u":
ch4096 = self._next()
ch256 = self._next()
ch16 = self._next()
ch1 = self._next()
n = 4096 * self._hexDigitToInt(ch4096)
n += 256 * self._hexDigitToInt(ch256)
n += 16 * self._hexDigitToInt(ch16)
n += self._hexDigitToInt(ch1)
ch = unichr(n)
elif ch not in '"/\\':
raise ReadException, "Not a valid escaped JSON character: '%s' in %s" % (ch, self._generator.all())
result = result + ch
except StopIteration:
raise ReadException, "Not a valid JSON string: '%s'" % self._generator.all()
assert self._next() == '"'
return result
def _hexDigitToInt(self, ch):
try:
result = self.hex_digits[ch.upper()]
except KeyError:
try:
result = int(ch)
except ValueError:
raise ReadException, "The character %s is not a hex digit." % ch
return result
def _readComment(self):
assert self._next() == "/"
second = self._next()
if second == "/":
self._readDoubleSolidusComment()
elif second == '*':
self._readCStyleComment()
else:
raise ReadException, "Not a valid JSON comment: %s" % self._generator.all()
def _readCStyleComment(self):
try:
done = False
while not done:
ch = self._next()
done = (ch == "*" and self._peek() == "/")
if not done and ch == "/" and self._peek() == "*":
raise ReadException, "Not a valid JSON comment: %s, '/*' cannot be embedded in the comment." % self._generator.all()
self._next()
except StopIteration:
raise ReadException, "Not a valid JSON comment: %s, expected */" % self._generator.all()
def _readDoubleSolidusComment(self):
try:
ch = self._next()
while ch != "\r" and ch != "\n":
ch = self._next()
except StopIteration:
pass
def _readArray(self):
result = []
assert self._next() == '['
done = self._peek() == ']'
while not done:
item = self._read()
result.append(item)
self._eatWhitespace()
done = self._peek() == ']'
if not done:
ch = self._next()
if ch != ",":
raise ReadException, "Not a valid JSON array: '%s' due to: '%s'" % (self._generator.all(), ch)
assert ']' == self._next()
return result
def _readObject(self):
result = {}
assert self._next() == '{'
done = self._peek() == '}'
while not done:
key = self._read()
if type(key) is not types.StringType:
raise ReadException, "Not a valid JSON object key (should be a string): %s" % key
self._eatWhitespace()
ch = self._next()
if ch != ":":
raise ReadException, "Not a valid JSON object: '%s' due to: '%s'" % (self._generator.all(), ch)
self._eatWhitespace()
val = self._read()
result[key] = val
self._eatWhitespace()
done = self._peek() == '}'
if not done:
ch = self._next()
if ch != ",":
raise ReadException, "Not a valid JSON array: '%s' due to: '%s'" % (self._generator.all(), ch)
assert self._next() == "}"
return result
def _eatWhitespace(self):
p = self._peek()
while p is not None and p in string.whitespace or p == '/':
if p == '/':
self._readComment()
else:
self._next()
p = self._peek()
def _peek(self):
return self._generator.peek()
def _next(self):
return self._generator.next()
class JsonWriter(object):
def _append(self, s):
self._results.append(s)
def write(self, obj, escaped_forward_slash=False):
self._escaped_forward_slash = escaped_forward_slash
self._results = []
self._write(obj)
return "".join(self._results)
def _write(self, obj):
ty = type(obj)
if ty is types.DictType:
n = len(obj)
self._append("{")
for k, v in obj.items():
self._write(k)
self._append(":")
self._write(v)
n = n - 1
if n > 0:
self._append(",")
self._append("}")
elif ty is types.ListType or ty is types.TupleType:
n = len(obj)
self._append("[")
for item in obj:
self._write(item)
n = n - 1
if n > 0:
self._append(",")
self._append("]")
elif ty is types.StringType or ty is types.UnicodeType:
self._append('"')
obj = obj.replace('\\', r'\\')
if self._escaped_forward_slash:
obj = obj.replace('/', r'\/')
obj = obj.replace('"', r'\"')
obj = obj.replace('\b', r'\b')
obj = obj.replace('\f', r'\f')
obj = obj.replace('\n', r'\n')
obj = obj.replace('\r', r'\r')
obj = obj.replace('\t', r'\t')
self._append(obj)
self._append('"')
elif ty is types.IntType or ty is types.LongType:
self._append(str(obj))
elif ty is types.FloatType:
self._append("%f" % obj)
elif obj is True:
self._append("true")
elif obj is False:
self._append("false")
elif obj is None:
self._append("null")
else:
raise WriteException, "Cannot write in JSON: %s" % repr(obj)
def write(obj, escaped_forward_slash=False):
return JsonWriter().write(obj, escaped_forward_slash)
def read(s):
return JsonReader().read(s)

Some files were not shown because too many files have changed in this diff Show More