This repository has been archived on 2025-05-04. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
fastly-py/fastly/fastly.py

65 lines
2.2 KiB
Python
Raw Normal View History

2012-02-07 03:55:05 -08:00
import httplib
import urllib
import json
from connection import *
from auth import *
from errors import *
from models import *
2012-02-07 03:55:05 -08:00
class API(object):
def __init__(self, host='api.fastly.com', secure=True, port=None, root='',
2012-02-09 16:29:35 -08:00
timeout=5.0, key=None):
2012-02-07 03:55:05 -08:00
self.conn = Connection(host, secure, port, root, timeout)
2012-02-09 16:29:35 -08:00
if key:
self.authenticate_by_key(key)
2012-02-07 03:55:05 -08:00
def authenticate_by_key(self, key):
self.conn.authenticator = KeyAuthenticator(key)
def authenticate_by_password(self, login, password):
self.conn.authenticator = SessionAuthenticator(self.conn, login, password)
def deauthenticate(self):
self.conn.authenticator = None
def service(self, id):
2012-02-09 16:29:35 -08:00
return Service.find(self.conn, id=id)
def version(self, service_id, version):
return Version.find(self.conn, service_id=service_id, number=version)
def domain(self, service_id, version, name):
return Domain.find(self.conn, service_id=service_id, version=version, name=name)
def backend(self, service_id, version, name):
return Backend.find(self.conn, service_id=service_id, version=version, name=name)
2013-06-21 16:18:24 +01:00
def settings(self, service_id, version):
return Settings.find(self.conn, service_id=service_id, version=version)
2013-06-25 12:41:25 +01:00
def condition(self, service_id, version, name):
return Condition.find(self.conn, service_id=service_id, version=version, name=name)
2013-06-25 16:40:04 +01:00
def header(self, service_id, version, name):
return Header.find(self.conn, service_id=service_id, version=version, name=name)
2012-02-07 03:55:05 -08:00
def purge_url(self, host, path):
resp, data = self.conn.request('PURGE', path, headers={'Host':host})
2012-02-07 03:55:05 -08:00
return resp.status == 200
def purge_service(self, service):
resp, data = self.conn.request('POST','/service/%s/purge_all' % service)
return resp.status == 200
def purge_key(self, service, key):
if type(self.conn.authenticator) is not KeyAuthenticator:
raise AuthenticationError("This request requires an API key")
resp, data = self.conn.request('POST','/service/%s/purge/%s' % (service, key))
return resp.status == 200