a work in progress
This commit is contained in:
		
						commit
						8b7ec8e5f3
					
				
					 5 changed files with 192 additions and 0 deletions
				
			
		
							
								
								
									
										31
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | |||
| BSD-style license | ||||
| ================= | ||||
|   | ||||
| Copyright (c) 2008, Sunlight Labs | ||||
|   | ||||
| All rights reserved. | ||||
|   | ||||
| Redistribution and use in source and binary forms, with or without modification, | ||||
| are permitted provided that the following conditions are met: | ||||
|   | ||||
|     * Redistributions of source code must retain the above copyright notice, | ||||
|       this list of conditions and the following disclaimer. | ||||
|     * Redistributions in binary form must reproduce the above copyright notice, | ||||
|       this list of conditions and the following disclaimer in the documentation | ||||
|       and/or other materials provided with the distribution. | ||||
|     * Neither the name of Sunlight Labs nor the names of its contributors may be | ||||
|       used to endorse or promote products derived from this software without | ||||
|       specific prior written permission. | ||||
|   | ||||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||||
| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||||
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | ||||
| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR | ||||
| CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||||
| EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | ||||
| PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | ||||
| PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | ||||
| LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | ||||
| NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|   | ||||
							
								
								
									
										1
									
								
								MANIFEST.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								MANIFEST.in
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| include LICENSE *.rst *.py | ||||
							
								
								
									
										37
									
								
								README.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								README.rst
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,37 @@ | |||
| ================== | ||||
| python-sunlightapi | ||||
| ================== | ||||
| 
 | ||||
| Python library for interacting with the Disqus API. | ||||
| 
 | ||||
| Documentation for the Disqus API is available at http://wiki.disqus.net/API | ||||
| 
 | ||||
| Written by James Turk <james.p.turk@gmail.com>. | ||||
| 
 | ||||
| All code is under a BSD-style license, see LICENSE for details. | ||||
| 
 | ||||
| Homepage: http://pypi.python.org/pypi/python-disqus/ | ||||
| 
 | ||||
| Source: http://github.com/jamesturk/python-disqus/ | ||||
| 
 | ||||
| 
 | ||||
| Requirements | ||||
| ============ | ||||
| 
 | ||||
| python >= 2.4 | ||||
| 
 | ||||
| simplejson >= 1.8 (not required with python 2.6, will use built in json module) | ||||
| 
 | ||||
| 
 | ||||
| Installation | ||||
| ============ | ||||
| To install run | ||||
| 
 | ||||
|     ``python setup.py install`` | ||||
| 
 | ||||
| which will install the bindings into python's site-packages directory. | ||||
| 
 | ||||
| Usage | ||||
| ===== | ||||
| 
 | ||||
| I promise, I'll write this soon, bug me if you need docs. | ||||
							
								
								
									
										97
									
								
								disqus.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								disqus.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,97 @@ | |||
| """ Python library for interacting with the Disqus API. | ||||
|   | ||||
| The Disqus API (http://wiki.disqus.net/API) allows for interaction with | ||||
| the Disqus comment system. | ||||
| """ | ||||
| 
 | ||||
| __author__ = "James Turk (james.p.turk@gmail.com)" | ||||
| __version__ = "0.0.1" | ||||
| __copyright__ = "Copyright (c) 2009 James Turk" | ||||
| __license__ = "BSD" | ||||
|   | ||||
| import urllib, urllib2 | ||||
| try: | ||||
|     import json | ||||
| except ImportError: | ||||
|     import simplejson as json | ||||
| 
 | ||||
| api_url = 'http://disqus.com/api/%s/' | ||||
| 
 | ||||
| def apicall(method, params, http_method='GET'): | ||||
|     params = urllib.urlencode(params) | ||||
|     if http_method == 'GET': | ||||
|         url = '?'.join((api_url % method, params)) | ||||
|         response = urllib2.urlopen(url).read() | ||||
|     else: | ||||
|         response = urllib2.urlopen(api_url % method, params).read() | ||||
|     msg = json.loads(response)['message'] | ||||
|     return msg | ||||
| 
 | ||||
| class Thread(object): | ||||
|     def __init__(self, d, forum_api_key): | ||||
|         for k,v in d.iteritems(): | ||||
|             setattr(self, k, v) | ||||
|         self.forum_api_key = forum_api_key | ||||
| 
 | ||||
|     def get_posts(self): | ||||
|         return apicall('get_thread_posts', {'forum_api_key': self.forum_api_key,  | ||||
|                                             'thread_id': self.id}) | ||||
| 
 | ||||
|     def update(self, title=None, slug=None, url=None, allow_comments=None): | ||||
|         params = {'forum_api_key': self.forum_api_key, 'thread_id': self.id} | ||||
|         if title: | ||||
|             params['title'] = title | ||||
|         if slug: | ||||
|             params['slug'] = slug | ||||
|         if url: | ||||
|             params['url'] = url | ||||
|         if allow_comments is not None: | ||||
|             params['allow_comments'] = allow_comments | ||||
|         return apicall('update_thread', params, 'POST') | ||||
| 
 | ||||
| class Forum(object): | ||||
|     def __init__(self, d): | ||||
|         for k,v in d.iteritems(): | ||||
|             setattr(self, k, v) | ||||
|         self._api_key = None | ||||
| 
 | ||||
|     @property | ||||
|     def api_key(self): | ||||
|         if not self._api_key: | ||||
|             msg = apicall('get_forum_api_key', {'user_api_key':user_key, | ||||
|                                                  'forum_id':self.id}) | ||||
|             self._api_key = msg | ||||
|         return self._api_key | ||||
| 
 | ||||
|     def create_post(thread_id, message, author_name, author_email, parent_post=None,  | ||||
|                     created_at=None, author_url=None, ip_address=None): | ||||
|         params = {'forum_api_key': self.api_key, 'thread_id':thread_id, 'message':message, 'author_name':author_name, 'author_email':author_email} | ||||
|         if parent_post: | ||||
|             params['parent_post'] = parent_post | ||||
|         if created_at: | ||||
|             params['created_at'] = created_at | ||||
|         if author_url: | ||||
|             params['author_url'] = author_url | ||||
|         if ip_address: | ||||
|             params['ip_address'] = ip_address | ||||
|         return apicall('create_post', params, 'POST') | ||||
| 
 | ||||
|     def get_thread_list(self): | ||||
|         msg = apicall('get_thread_list', {'forum_api_key':self.api_key}) | ||||
|         return [Thread(t, self.api_key) for t in msg] | ||||
| 
 | ||||
|     def get_num_posts(self, *thread_ids): | ||||
|         params = {'forum_api_key': self.api_key, 'thread_ids': ','.join(thread_ids)} | ||||
|         return apicall('get_num_posts', params) | ||||
| 
 | ||||
|     def get_thread_by_url(self, url): | ||||
|         msg = apicall('get_thread_by_url', {'forum_api_key': self.api_key, 'url': url}) | ||||
|         return Thread(msg, self.api_key) | ||||
| 
 | ||||
|     def thread_by_identifier(self, title, identifier): | ||||
|         msg = apicall('thread_by_identifier', {'forum_api_key': self.api_key, 'title': title, 'identifier': identifier}, 'POST') | ||||
|         return Thread(msg['thread'], self.api_key), msg['created'] | ||||
| 
 | ||||
| def get_forum_list(user_key): | ||||
|     msg = apicall('get_forum_list', {'user_api_key':user_key}) | ||||
|     return [Forum(f) for f in msg] | ||||
							
								
								
									
										26
									
								
								setup.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								setup.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,26 @@ | |||
| from distutils.core import setup | ||||
| from disqus import __version__,__license__,__doc__ | ||||
|   | ||||
| license_text = open('LICENSE').read() | ||||
| long_description = open('README.rst').read() | ||||
|   | ||||
| setup(name="python-disqus", | ||||
|       version=__version__, | ||||
|       py_modules=["disqus"], | ||||
|       description="Libraries for interacting with the Disqus API", | ||||
|       author="James Turk", | ||||
|       author_email = "james.p.turk@gmail.com", | ||||
|       license=license_text, | ||||
|       url="http://github.com/jamesturk/python-disqus/", | ||||
|       long_description=long_description, | ||||
|       platforms=["any"], | ||||
|       classifiers=["Development Status :: 3 - Alpha", | ||||
|                    "Intended Audience :: Developers", | ||||
|                    "License :: OSI Approved :: BSD License", | ||||
|                    "Natural Language :: English", | ||||
|                    "Operating System :: OS Independent", | ||||
|                    "Programming Language :: Python", | ||||
|                    "Topic :: Software Development :: Libraries :: Python Modules", | ||||
|                    ], | ||||
|        install_requires=["simplejson >= 1.8"] | ||||
|       ) | ||||
		Loading…
	
		Reference in a new issue
	
	 James Turk
						James Turk