Exemplo n.º 1
0
class Greeter(object):

	def __init__(self, access_token):
		self.access_token = access_token
		self.requestor = Requestor(GREETER_URL)

	def setup(self):
		params = self._get_params()
		headers = self._get_headers()
		payload = self._get_payload()
		self.requestor.post(params, headers, payload)

	def _get_params(self):
		return {
			"access_token": self.access_token
		}

	def _get_headers(self):
		return {
			"Content-Type": "application/json"
		}

	def _get_payload(self):
		return json.dumps({
			"greeting":[
				{
					"locale": "default",
					"text": GREETER_TEXT
				}
		    ]
		})
Exemplo n.º 2
0
class Menu(object):
    def __init__(self, access_token):
        self.access_token = access_token
        self.requestor = Requestor(MENU_URL)

    def setup(self):
        self._make_post_request()

    def _make_post_request(self):
        """Getting started button required to be POST'd first
		"""
        params = self._get_POST_params()
        headers = self._get_headers()
        payload = self._get_payload()
        self.requestor.post(params, headers, payload)

    def _get_headers(self):
        return {"Content-Type": "application/json"}

    def _get_POST_params(self):
        return {"access_token": self.access_token}

    def _get_GET_params(self):
        return {"access_token": self.access_token, "fields": "persistent_menu"}

    def _get_payload(self):
        return json.dumps({
            "persistent_menu": [{
                "locale": "default",
                "composer_input_disabled": False,
                "call_to_actions": [self._get_actions()]
            }]
        })

    def _get_actions(self):
        return {
            "title": "Menu",
            "type": "nested",
            "call_to_actions": self._get_menu_buttons()
        }

    def _get_menu_buttons(self):
        return [
            self._get_hours_button(),
            self._get_availabilities_button(),
        ]

    def _get_hours_button(self):
        return {"title": "Hours", "type": "postback", "payload": HOURS_PAYLOAD}

    def _get_availabilities_button(self):
        return {
            "title": "Availabilities",
            "type": "postback",
            "payload": AVAILABILITIES_PAYLOAD
        }
Exemplo n.º 3
0
class FacebookUserRequestor(object):
    def __init__(self, access_token, user_id):
        self.access_token = access_token
        self.requestor = Requestor(self._get_url(user_id))

    def _get_url(self, user_id):
        return USER_URL + user_id + "?"

    def get_user_json(self):
        params = self._get_params()
        headers = self._get_headers()
        return self.requestor.get(params)

    def _get_params(self):
        return {
            "access_token": self.access_token,
            "fields": self._get_fields()
        }

    def _get_fields(self):
        fields = [
            "first_name",
            "last_name",
            "locale",
            "timezone",
        ]
        return self._get_formatted_fields(fields)

    def _get_formatted_fields(self, fields):
        return ",".join(fields)

    def _get_headers(self):
        return {"Content-Type": "application/json"}
Exemplo n.º 4
0
class Capsule:

    def __init__(self, host, port):

        self.ns = NameService()

        self.marshaller_client = Marshaller()
        self.c = ClientRequestHandler()
        self.requestor = Requestor(self.marshaller_client, self.c)

        self.server = threading.Thread(target = self.createServer, args = (host, port) )

        self.server.daemon = True

        self.server.start()            

    def resetNS(self):
        self.ns.reset()

    def createServer(self, host, port):
        self.marshaller_server = Marshaller()
        self.invoker = Invoker(self.marshaller_server)
        self.s = ServerRequestHandler(host, port, self.invoker)
        self.invoker.addServer(self.s);

    def registerRemoteObject(self, id, name, obj, host, port):
        self.ns.register(id, name, host, port)
        self.invoker.register(id, name, obj)

    def invoke(self, obj, method, args):
        result = self.requestor.invoke(obj, method, args)
        return result
Exemplo n.º 5
0
class GetStartedButton(object):
    def __init__(self, access_token):
        self.access_token = access_token
        self.requestor = Requestor(GET_STARTED_BUTTON_URL)

    def setup(self):
        params = self._get_params()
        headers = self._get_headers()
        payload = self._get_payload()
        self.requestor.post(params, headers, payload)

    def _get_headers(self):
        return {"Content-Type": "application/json"}

    def _get_params(self):
        return {"access_token": self.access_token}

    def _get_GET_params(self):
        return {"access_token": self.access_token, "fields": "get_started"}

    def _get_payload(self):
        return json.dumps({"get_started": {"payload": GET_STARTED_PAYLOAD}})
Exemplo n.º 6
0
    def __init__(self, host, port):

        self.ns = NameService()

        self.marshaller_client = Marshaller()
        self.c = ClientRequestHandler()
        self.requestor = Requestor(self.marshaller_client, self.c)

        self.server = threading.Thread(target = self.createServer, args = (host, port) )

        self.server.daemon = True

        self.server.start()            
Exemplo n.º 7
0
    def __init__(self, api_key, api_base_url=None, _requestor=None):
        if api_key is None:
            raise TypeError('api_key cannot be blank.')

        if api_base_url is None:
            api_base_url = 'https://api.userkit.io/v1'
        else:
            api_base_url += '/v1'

        self.api_key = api_key
        self.api_base_url = api_base_url

        # make the encapsulated objects
        self._rq = _requestor or Requestor(self.api_key, self.api_base_url)
        self.users = UserManager(self._rq)
        self.invites = InviteManager(self._rq)
        self.emails = EmailManager(self._rq)
        self.widget = WidgetManager(self._rq)
        self.logs = LogsManager(self._rq)
Exemplo n.º 8
0
class Replier(object):

	def __init__(self, access_token):
		self.access_token = access_token
		self.requestor = Requestor(REPLY_URL)

	def wit_send(self, request, response):
		recipient_id = request['session_id']
		message = response['text']
		params = self._get_params()
		headers = self._get_headers()
		payload = self._get_payload(recipient_id, message)
		self.requestor.post(params, headers, payload)

	def reply_with(self, recipient_id, message):
		params = self._get_params()
		headers = self._get_headers()
		payload = self._get_payload(recipient_id, message)
		self.requestor.post(params, headers, payload)

	def reply_welcome(self, recipient_id, user):
		text = self._get_welcome_text(user)
		params = self._get_params()
		headers = self._get_headers()
		payload = self._get_payload(recipient_id, text)
		self.requestor.post(params, headers, payload)

	def _get_welcome_text(self, user):
		return "Hi " + user.first_name + " " + user.last_name + ". " + WELCOME_TEXT

	def _get_params(self):
		return {
			"access_token": self.access_token
		}

	def _get_headers(self):
		return {
			"Content-Type": "application/json"
		}

	def _get_payload(self, recipient_id, message):
		return json.dumps({
			"recipient": {
				"id": recipient_id
			},
			"message": {
				"text": message
			}
		})
Exemplo n.º 9
0
 def __init__(self, link, req=Requestor()):
     self.link = link
     self.pag = Pagination(req.get(link))
     self.pages = SubForumPages(self.link, pag=self.pag)
Exemplo n.º 10
0
 def __init__(self, access_token):
     self.access_token = access_token
     self.requestor = Requestor(GET_STARTED_BUTTON_URL)
Exemplo n.º 11
0
 def __init__(self, access_token):
     self.access_token = access_token
     self.requestor = Requestor(MENU_URL)
Exemplo n.º 12
0
 def __init__(self, access_token, user_id):
     self.access_token = access_token
     self.requestor = Requestor(self._get_url(user_id))
Exemplo n.º 13
0
	def __init__(self, access_token):
		self.access_token = access_token
		self.requestor = Requestor(GREETER_URL)
Exemplo n.º 14
0
class Downloader(object):
    def __init__(self, base="http://repo1.maven.org/maven2", username=None, password=None):
        self.requestor = Requestor(username, password)
        self.resolver = Resolver(base, self.requestor)

    
    def download(self, artifact, filename=None, suppress_log=False):
        filename = artifact.get_filename(filename)
        url = self.resolver.uri_for_artifact(artifact)
        if not self.verify_md5(filename, url + ".md5"):
            if not suppress_log:
                print("Downloading artifact " + str(artifact))
                hook=self._chunk_report
            else:
                hook=self._chunk_report_suppress

            onError = lambda uri, err: _throwDownloadFailed("Failed to download artifact " + str(artifact) + "from " + uri)
            response = self.requestor.request(url, onError, lambda r: r)
            
            if response:
                with open(filename, 'w') as f:
                    self._write_chunks(response, f, report_hook=hook)
                if not suppress_log:
                    print("Downloaded artifact %s to %s" % (artifact, filename))
                return (artifact, True)
            else:
                return (artifact, False)
        else:
            if not suppress_log:
                print("%s is already up to date" % artifact)
            return (artifact, True)

    def _throwDownloadFailed(msg):
        raise RequestException(msg)

    def _chunk_report_suppress(self, bytes_so_far, chunk_size, total_size):
        pass

    def _chunk_report(self, bytes_so_far, chunk_size, total_size):
        percent = float(bytes_so_far) / total_size
        percent = round(percent*100, 2)
        sys.stdout.write("Downloaded %d of %d bytes (%0.2f%%)\r" %
                 (bytes_so_far, total_size, percent))

        if bytes_so_far >= total_size:
            sys.stdout.write('\n')

    def _write_chunks(self, response, file, chunk_size=8192, report_hook=None):
        total_size = response.info().getheader('Content-Length').strip()
        total_size = int(total_size)
        bytes_so_far = 0

        while 1:
            chunk = response.read(chunk_size)
            bytes_so_far += len(chunk)

            if not chunk:
                break

            file.write(chunk)
            if report_hook:
                report_hook(bytes_so_far, chunk_size, total_size)

        return bytes_so_far

    def verify_md5(self, file, remote_md5):
        if not os.path.exists(file):
            return False
        else:
            local_md5 = self._local_md5(file)
            onError = lambda uri, err: _throwDownloadFailed("Failed to download MD5 from " + uri)
            remote = self.requestor.request(remote_md5, onError, lambda r: r.read())
            return local_md5 == remote

    def _local_md5(self, file):
        md5 = hashlib.md5()
        with open(file, 'rb') as f:
            for chunk in iter(lambda: f.read(8192), ''):
                md5.update(chunk)
        return md5.hexdigest()
Exemplo n.º 15
0
 def __init__(self, link, req=Requestor(), index=0):
     self.source = req.get(link)
     self.index = index
     self.sections = []
     self.__build()
Exemplo n.º 16
0
 def __init__(self, link, index=0, req=Requestor()):
     self.req = req
     self.source = req.get(link)
     self.posts = []
     self.__build()
Exemplo n.º 17
0
 def __init__(self, link, req=Requestor()):
     self.req = req
     self.pag = Pagination(self.req.get(link))
     self.pages = TopicPages(link, pag=self.pag)
Exemplo n.º 18
0
 def __init__(self, base="http://repo1.maven.org/maven2", username=None, password=None):
     self.requestor = Requestor(username, password)
     self.resolver = Resolver(base, self.requestor)
Exemplo n.º 19
0
class Downloader(object):
    def __init__(self,
                 base="http://repo1.maven.org/maven2",
                 username=None,
                 password=None):
        self.requestor = Requestor(username, password)
        self.resolver = Resolver(base, self.requestor)

    def download(self, artifact, filename=None, suppress_log=False):
        filename = artifact.get_filename(filename)
        url = self.resolver.uri_for_artifact(artifact)
        if not self.verify_md5(filename, url + ".md5"):
            if not suppress_log:
                print("Downloading artifact " + str(artifact))
                hook = self._chunk_report
            else:
                hook = self._chunk_report_suppress

            onError = lambda uri, err: self._throwDownloadFailed(
                "Failed to download artifact " + str(artifact) + "from " + uri)
            response = self.requestor.request(url, onError, lambda r: r)

            if response:
                with open(filename, 'w') as f:
                    self._write_chunks(response, f, report_hook=hook)
                if not suppress_log:
                    print("Downloaded artifact %s to %s" %
                          (artifact, filename))
                return (artifact, True)
            else:
                return (artifact, False)
        else:
            if not suppress_log:
                print("%s is already up to date" % artifact)
            return (artifact, True)

    def _throwDownloadFailed(self, msg):
        raise RequestException(msg)

    def _chunk_report_suppress(self, bytes_so_far, chunk_size, total_size):
        pass

    def _chunk_report(self, bytes_so_far, chunk_size, total_size):
        percent = float(bytes_so_far) / total_size
        percent = round(percent * 100, 2)
        sys.stdout.write("Downloaded %d of %d bytes (%0.2f%%)\r" %
                         (bytes_so_far, total_size, percent))

        if bytes_so_far >= total_size:
            sys.stdout.write('\n')

    def _write_chunks(self, response, file, chunk_size=8192, report_hook=None):
        total_size = response.info().getheader('Content-Length').strip()
        total_size = int(total_size)
        bytes_so_far = 0

        while 1:
            chunk = response.read(chunk_size)
            bytes_so_far += len(chunk)

            if not chunk:
                break

            file.write(chunk)
            if report_hook:
                report_hook(bytes_so_far, chunk_size, total_size)

        return bytes_so_far

    def verify_md5(self, file, remote_md5):
        if not os.path.exists(file):
            return False
        else:
            local_md5 = self._local_md5(file)
            onError = lambda uri, err: self._throwDownloadFailed(
                "Failed to download MD5 from " + uri)
            remote = self.requestor.request(remote_md5, onError,
                                            lambda r: r.read())
            return local_md5 == remote

    def _local_md5(self, file):
        md5 = hashlib.md5()
        with open(file, 'rb') as f:
            for chunk in iter(lambda: f.read(8192), ''):
                md5.update(chunk)
        return md5.hexdigest()
Exemplo n.º 20
0
 def __init__(self,
              base="http://repo1.maven.org/maven2",
              username=None,
              password=None):
     self.requestor = Requestor(username, password)
     self.resolver = Resolver(base, self.requestor)