Exemple #1
0
def search_by_email(args, user_integration):
    agc = Agile_Credentials.objects.get(
        user_integration_id=user_integration.id)
    APIKEY = agc.AGILE_API_KEY
    EMAIL = agc.AGILE_EMAIL_ID
    DOMAIN = agc.AGILE_DOMAIN_NAME
    BASE_URL = "https://" + DOMAIN + ".agilecrm.com/dev/api/"
    email = args['EmailID']
    url = BASE_URL + "contacts/search/email/" + email
    headers = {
        'Accept': 'application/json',
        'content-type': contenttype,
    }

    response = requests.get(url, headers=headers, auth=(EMAIL, APIKEY))
    m = MessageClass()
    m.message_text = str(response.text)
    #print (str(response.text) + "test")
    a = json.loads(response.text)

    print("\n\nFULL NAME:" + a['properties'][0]['value'] + " " +
          a['properties'][1]['value'] + "\nEMAIL:" +
          a['properties'][4]['value'] + "\nPHONE:" +
          a['properties'][5]['value'])
    m.message_text = "\n\nFULL NAME:" + a['properties'][0]['value'] + " " + a[
        'properties'][1]['value'] + "\nEMAIL:" + a['properties'][4][
            'value'] + "\nPHONE:" + a['properties'][5]['value']
    return m
    def deal_get(self, args):
        """For viewing the account details"""
        id = args['Id']
        query = "api_key=" + self.API_Access_key + "&api_action=deal_get&api_output=json&id="+id
        url = (self.API_Access_URL + "/admin/api.php?" + query)
        print(self.API_Access_URL)
        print(url)
        response = requests.get(url)
        response_json = response.json()
        print(response_json)
        message = MessageClass()
        message.message_text = "Account Details:"

        attachment = MessageAttachmentsClass()
        field1 = AttachmentFieldsClass()
        field1.title = "Title"
        field1.value = response_json['title']
        attachment.attach_field(field1)

        field2 = AttachmentFieldsClass()
        field2.title = "Contact Email"
        field2.value = response_json['contact_email']
        attachment.attach_field(field2)

        field3 = AttachmentFieldsClass()
        field3.title = "Deal Notes"
        field3.value = response_json['deal_notes']
        attachment.attach_field(field3)

        message.attach(attachment)
        message.message_text = "The Details of Deal are:"
        return message.to_json()
Exemple #3
0
    def next_page(self, args):
        """This returns the list of functions in the next page"""
        message = MessageClass()
        region = args['Region']
        next_marker = args['NextMarker']
        aws_lambda = boto3.client(service_name='lambda', region_name=region,
                                  api_version=None, use_ssl=True, verify=None,
                                  endpoint_url=None, aws_access_key_id=self.aws_access_key,
                                  aws_secret_access_key=self.aws_secret_token,
                                  aws_session_token=None, config=None)
        # Gets the next ten functions in lambda
        response = aws_lambda.list_functions(Marker=next_marker, MaxItems=10)
        functions = [Function['FunctionName'] for Function in response['Functions']]
        for Function in functions:

            attachment = MessageAttachmentsClass()
            attachment.title = Function

            # Button to get the logs of the function
            button = MessageButtonsClass()
            button.text = "Get Logs"
            button.value = "Get Logs"
            button.name = "Get Logs"
            button.command = {"service_application": self.yellowant_integration_id,
                              "function_name": "get-logs",
                              "data": {"FunctionName": Function, "Region": region}}
            attachment.attach_button(button)

            # Button to invoke the function
            button1 = MessageButtonsClass()
            button1.text = "Invoke"
            button1.value = "Invoke"
            button1.name = "Invoke"
            button1.command = {"service_application": self.yellowant_integration_id,
                               "function_name": "invoke-async",
                               "data": {"Function-Name": Function, "Region": region},
                               "inputs": ["input"]}
            attachment.attach_button(button1)
            message.attach(attachment)

        try:
            # Button to get the functions in next page, Checks actually if next page exists or not
            attachment = MessageAttachmentsClass()
            button2 = MessageButtonsClass()
            button2.text = "Next Page"
            button2.value = "Next Page"
            button2.name = "Next Page"
            button2.command = {"service_application": self.yellowant_integration_id,
                               "function_name": "next-page",
                               "data": {"NextMarker": response['NextMarker'], "Region": region}}
            attachment.attach_button(button2)
            message.attach(attachment)
            message.message_text = "The Functions present are:"

        except:
            message.message_text = "This is the Last page and The Functions present are: "

        return message.to_json()
    def run(self):
        """Method which runs when the thread is started"""
        global GROUP_NAME, VM_NAME, USERNAME, PASSWORD

        message = MessageClass()
        credentials, subscription_id = get_credentials(self.user_integration)
        compute_client = ComputeManagementClient(credentials, subscription_id)
        network_client = NetworkManagementClient(credentials, subscription_id)
        GROUP_NAME = self.args.get("Resource-Group")
        VM_NAME = self.args.get("VM-Name")
        NIC_NAME = self.args.get("nic_name")
        IP_CONFIG_NAME = self.args.get("ipconfig_name")
        USERNAME = self.args.get("username")
        PASSWORD = self.args.get("password")
        VNET_NAME = self.args.get("vnet_name")
        SUBNET_NAME = self.args.get("subnet_name")
        LOCATION = self.args.get("location")

        try:
            # Create a NIC
            nic = create_nic(network_client, VNET_NAME, SUBNET_NAME,
                             IP_CONFIG_NAME, NIC_NAME)

            #############
            # VM Sample #
            #############

            # Create Linux VM
            print('\nCreating Linux Virtual Machine')
            vm_parameters = create_vm_parameters(nic.id, VM_REFERENCE['linux'],
                                                 VM_NAME, USERNAME, PASSWORD,
                                                 LOCATION)
            async_vm_creation = compute_client.virtual_machines.create_or_update(
                GROUP_NAME, VM_NAME, vm_parameters)
            # async_vm_creation.wait()
            message.message_text = "You are Virtual Machine is being created"

        except CloudError:
            print('A VM operation failed:', traceback.format_exc(), sep='\n')
            message.message_text = "There was an error.Please try again"

        else:
            webhook_message = MessageClass()
            webhook_message.message_text = "VM created successfully"
            attachment = MessageAttachmentsClass()
            attachment.title = VM_NAME

            webhook_message.attach(attachment)
            yellowant_user_integration_object = YellowAnt(
                access_token=self.user_integration.yellowant_integration_token)
            yellowant_user_integration_object.create_webhook_message(
                requester_application=self.user_integration.
                yellowant_integration_id,
                webhook_name="start_vm_webhook",
                **webhook_message.get_dict())
            print('All example operations completed successfully!')
Exemple #5
0
    def get_complaints(self, args):

        print("In get_complaints")

        # API parameteres for getting account information
        auth = ("api", self.mailgun_access_token)

        # Consuming the API
        r = requests.get("https://api.mailgun.net/v3/" + self.domain_name +
                         "/complaints",
                         auth=("api", self.mailgun_access_token))

        # NOT USED here
        sample_response = {
            "items": [{
                "address": "*****@*****.**",
                "created_at": "Fri, 21 Oct 2011 11:02:55 GMT"
            }]
        }

        # Response check
        if r.status_code == requests.codes.ok:

            # Getting response in JSON
            print(print(json.loads(r.text)))
            response = json.loads(r.text)

            # Creating message objects to structure the message to be shown
            if (len(response['items']) == 0):
                message = MessageClass()
                message.message_text = "You don't have any complaints as of now !"
                return message.to_json()

            message = MessageClass()
            message.message_text = "Complaint details :"
            attachment = MessageAttachmentsClass()

            for i in range(0, len(response['items'])):
                field1 = AttachmentFieldsClass()
                field1.title = "Address :"
                field1.value = response['items'][i]["address"]
                attachment.attach_field(field1)

                field2 = AttachmentFieldsClass()
                field2.title = "Created at :"
                field2.value = response['items'][i]["created_at"]
                attachment.attach_field(field2)

            message.attach(attachment)
            return message.to_json()
        else:
            m = MessageClass()
            print(r.content.decode("utf-8"))
            d = r.content.decode("utf-8")
            m.message_text = "{0}: {1}".format(r.status_code, r.text)
            return m.to_json()
Exemple #6
0
	def status (self,args):
		tweet=args['tweet']
		try:
			self.api.update_status(tweet)
		except:
			m  = MessageClass()
			m.message_text="Status not updated!!!"
			return m.to_json()
		m=MessageClass()
		m.message_text="Status Updated!!!"
		return m.to_json()
Exemple #7
0
	def unfollow(self,args):
		handle=args['handle']
		try:
			self.api.destroy_friendship(handle)
		except:
			m  = MessageClass()
			m.message_text="can't unfollow!!!"
			return m.to_json()
		m=MessageClass()
		m.message_text="Person with screen_name="+handle+ " is unfollowed!!!"
		return m.to_json()
Exemple #8
0
	def favourite(self,args):
		id=args['id']
		try:
			self.api.create_favorite(id)
		except:
			m  = MessageClass()
			m.message_text="Status can't be added to favourites!!!"
			return m.to_json()
		m=MessageClass()
		m.message_text="Status with id=" + id + " is added to favorites!!!"
		return m.to_json()
Exemple #9
0
	def follow(self,args):
		handle=args['handle']
		try:
			self.api.create_friendship(handle)
		except:
			m  = MessageClass("person can't be followed")
			m.message_text="!!!"
			return m.to_json()
		m=MessageClass()
		m.message_text="you followed a person with screen_name="+handle
		return m.to_json()
Exemple #10
0
    def get_space_usage(self, args):

        print("In get_space_usage")

        headers = {
            'Authorization': 'Bearer ' + str(self.dropbox_access_token),
        }

        # Consuming the API
        r = requests.post('https://api.dropboxapi.com/2/users/get_space_usage',
                          headers=headers)

        # Response check
        if r.status_code == requests.codes.ok:

            # Fetching response in JSON
            response = r.content.decode("utf-8")
            response = json.loads(response)
            print(response)

            #Creating a message object from YA SDK
            message = MessageClass()
            message.message_text = "Space usage/allocation details :"

            attachment = MessageAttachmentsClass()

            used_gb = float(response['used'] / 1000000000)
            allocated_gb = float(response['allocation']['allocated'] /
                                 1000000000)

            field1 = AttachmentFieldsClass()
            field1.title = "Used : "
            field1.value = str(
                Decimal(str(used_gb)).quantize(Decimal('.01'),
                                               rounding=ROUND_DOWN)) + " gb"
            attachment.attach_field(field1)

            field2 = AttachmentFieldsClass()
            field2.title = "Allocated : "
            field2.value = str(
                Decimal(str(allocated_gb)).quantize(
                    Decimal('.01'), rounding=ROUND_DOWN)) + " gb"
            attachment.attach_field(field2)

            message.attach(attachment)
            return message.to_json()

        else:
            m = MessageClass()
            print(r.content.decode("utf-8"))
            d = r.content.decode("utf-8")
            m.message_text = "{0}: {1}".format(r.status_code, r.text)
            return m.to_json()
Exemple #11
0
	def dm(self,args):
		handle=args['handle']
		message=args['message']
		try:
			self.api.send_direct_message(handle,text=message)
		except:
			m  = MessageClass()
			m.message_text="Message can't be sent!!!"
			return m.to_json()
		m=MessageClass()
		m.message_text="You just successfully sent a message to user "+handle
		return m.to_json()
Exemple #12
0
    def get_domain(self, args):
        """ Get a single domain """

        # API parameteres for getting account information
        auth = ("api", self.mailgun_access_token)

        # Consuming the API
        r = requests.get("https://api.mailgun.net/v3/domains/" +
                         str(self.domain_name),
                         auth=auth)
        print(self.mailgun_access_token)
        # Response check
        if r.status_code == requests.codes.ok:

            # Getting response in JSON
            print(json.loads(r.content.decode("utf-8")))
            response = json.loads(r.content.decode("utf-8"))

            # Creating message objects to structure the message to be shown
            message = MessageClass()
            message.message_text = "Domain details :"

            attachment = MessageAttachmentsClass()

            field1 = AttachmentFieldsClass()
            field1.title = "Domain :"
            field1.value = response['domain']["name"]
            attachment.attach_field(field1)

            field2 = AttachmentFieldsClass()
            field2.title = "State :"
            field2.value = response['domain']["state"]
            attachment.attach_field(field2)

            field3 = AttachmentFieldsClass()
            field3.title = "Created at :"
            field3.value = response['domain']['created_at']
            attachment.attach_field(field3)

            field4 = AttachmentFieldsClass()
            field4.title = "Type :"
            field4.value = response['domain']['type']
            attachment.attach_field(field4)

            message.attach(attachment)
            return message.to_json()
        else:
            m = MessageClass()
            print(r.content.decode("utf-8"))
            d = r.content.decode("utf-8")
            m.message_text = "{0}: {1}".format(r.status_code, r.text)
            return m.to_json()
 def parse(self):
     """Function for parsing."""
     message = MessageClass()
     if self.yellowant_integration_id is None:
         message.message_text = "Sorry! I could not find your integration."
         return message
     elif self.command is None:
         message.message_text = "Sorry! I could not find that command."
         return message
     # build YA message object
     message = self.command(self.args, self.user_integration)
     # use inbuilt sdk method to_json to return message in a json format accepted by YA
     return message.to_json()
Exemple #14
0
    def send_mail(self, args):

        print("In send_mail")

        # Arguments from slack
        to = args['to']
        text = args['text']
        subject = args['subject']

        # API parameteres for getting account information
        auth = ("api", self.mailgun_access_token)

        # sample payload
        data = {
            "from": "mailgun" + "@" + self.domain_name,
            "to": [to, "mailgun" + "@" + self.domain_name],
            "subject": subject,
            "text": text
        }

        # Consuming the API
        r = requests.post("https://api.mailgun.net/v3/" + self.domain_name +
                          "/messages",
                          auth=auth,
                          data=data)

        # NOT USED here
        sample_response = {
            "message": "Queued. Thank you.",
            "id": "<*****@*****.**>"
        }

        # Response check
        if r.status_code == requests.codes.ok:

            # Getting response in JSON
            print(print(json.loads(r.text)))
            response = json.loads(r.text)

            # Creating message objects to structure the message to be shown

            message = MessageClass()
            message.message_text = response["message"]
            return message.to_json()

        else:
            m = MessageClass()
            print(r.content.decode("utf-8"))
            d = json.loads(r.content.decode("utf-8"))
            m.message_text = d['message']
            return m.to_json()
Exemple #15
0
    def get_account_info(self, args):

        print("In get_company_info")
        endpoint = "https://api.dropboxapi.com/2/users/get_account"

        # API parameteres for getting account information

        headers = {
            'Authorization': 'Bearer ' + self.dropbox_access_token,
            'Content-Type': 'application/json',
        }

        data = {"account_id": str(self.account_id)}

        # Consuming the API
        r = requests.post('https://api.dropboxapi.com/2/users/get_account',
                          headers=headers,
                          json=data)

        # Response check
        if r.status_code == requests.codes.ok:

            # Getting response in JSON
            response = r.content.decode("utf-8")
            response = json.loads(response)

            # Creating message objects to structure the message to be shown
            message = MessageClass()
            message.message_text = "User Account Details :"

            attachment = MessageAttachmentsClass()

            field1 = AttachmentFieldsClass()
            field1.title = "Name :"
            field1.value = response["name"]["display_name"]
            attachment.attach_field(field1)

            field2 = AttachmentFieldsClass()
            field2.title = "E-mail :"
            field2.value = response["email"]
            attachment.attach_field(field2)
            attachment.image_url = response["profile_photo_url"]

            message.attach(attachment)
            return message.to_json()
        else:
            m = MessageClass()
            print(r.content.decode("utf-8"))
            d = r.content.decode("utf-8")
            m.message_text = "{0}: {1}".format(r.status_code, r.text)
            return m.to_json()
Exemple #16
0
    def get_space_usage(self,args):

        print("In get_space_usage")

        headers = {
            'Authorization': 'Bearer ' + str(self.dropbox_access_token),
        }

        # Consuming the API
        r = requests.post('https://api.dropboxapi.com/2/users/get_space_usage', headers=headers)

        # Response check
        if r.status_code == requests.codes.ok:

            # Fetching response in JSON
            response = r.content.decode("utf-8")
            response = json.loads(response)
            print(response)

            #Creating a message object from YA SDK
            message = MessageClass()
            message.message_text = "Space usage/allocation details :"

            attachment = MessageAttachmentsClass()

            used_gb = float(response['used']/1000000000)
            allocated_gb = float(response['allocation']['allocated']/1000000000)



            field1 = AttachmentFieldsClass()
            field1.title = "Used : "
            field1.value = str(Decimal(str(used_gb)).quantize(Decimal('.01'), rounding=ROUND_DOWN)) + " gb"
            attachment.attach_field(field1)

            field2 = AttachmentFieldsClass()
            field2.title = "Allocated : "
            field2.value = str(Decimal(str(allocated_gb)).quantize(Decimal('.01'), rounding=ROUND_DOWN)) + " gb"
            attachment.attach_field(field2)

            message.attach(attachment)
            return message.to_json()


        else:
            m = MessageClass()
            print(r.content.decode("utf-8"))
            d = r.content.decode("utf-8")
            m.message_text = "{0}: {1}".format(r.status_code, r.text)
            return m.to_json()
Exemple #17
0
    def get_account_info(self,args):

        print("In get_company_info")
        endpoint = "https://api.dropboxapi.com/2/users/get_account"

        # API parameteres for getting account information

        headers = {
            'Authorization': 'Bearer ' + self.dropbox_access_token,
            'Content-Type': 'application/json',
        }

        data = {"account_id": str(self.account_id)}

        # Consuming the API
        r = requests.post('https://api.dropboxapi.com/2/users/get_account', headers=headers, json=data)

        # Response check
        if r.status_code == requests.codes.ok:

            # Getting response in JSON
            response = r.content.decode("utf-8")
            response = json.loads(response)

            # Creating message objects to structure the message to be shown
            message = MessageClass()
            message.message_text = "User Account Details :"

            attachment = MessageAttachmentsClass()

            field1 = AttachmentFieldsClass()
            field1.title = "Name :"
            field1.value = response["name"]["display_name"]
            attachment.attach_field(field1)


            field2 = AttachmentFieldsClass()
            field2.title = "E-mail :"
            field2.value = response["email"]
            attachment.attach_field(field2)
            attachment.image_url = response["profile_photo_url"]

            message.attach(attachment)
            return message.to_json()
        else:
            m = MessageClass()
            print(r.content.decode("utf-8"))
            d = r.content.decode("utf-8")
            m.message_text = "{0}: {1}".format(r.status_code, r.text)
            return m.to_json()
def list_all_vms_in_rg(args, user_integration):
    message = MessageClass()
    GROUP_NAME = args.get("Resource-Group")
    credentials, subscription_id = get_credentials(user_integration)
    compute_client = ComputeManagementClient(credentials, subscription_id)
    print('\nList VMs in resource group')
    message.message_text = "Listing all VMs"
    data = {'list': []}
    for vm in compute_client.virtual_machines.list(GROUP_NAME):
        print("\tVM: {}".format(vm.name))
        data['list'].append({"VM_name": vm.name})
        print('inside for')
        message.message_text = message.message_text + "\n" + vm.name
    message.data = data
    return message
Exemple #19
0
    def list_all_customer_ids(self, args):
        '''
        Picklist function to get list of customer ids
        '''

        print("In list_all_customer_ids")

        # API call parameters for getting all customer ids
        route = "/v3/company/" + self.realmID + "/query?query=select * from Customer"
        bearer = getBearerTokenFromRefreshToken(
            self.quickbook_access_token_object.refreshToken,
            self.user_integration)
        auth_header = 'Bearer ' + bearer.accessToken
        headers = {
            'Authorization': auth_header,
            'content-type': 'application/json'
        }

        # Consuming the API
        r = requests.get(settings.PRODUCTION_BASE_URL + route, headers=headers)

        # Response check
        if r.status_code == requests.codes.ok:

            # Fetching response in JSON
            response = json.loads(json.dumps(xmltodict.parse(r.text)))
            # print(response)

            customer_data = response['IntuitResponse']['QueryResponse'][
                'Customer']

            # Creating a message object using YA SDK functions
            m = MessageClass()
            m.message_text = "This is list all customer picklist function"

            ### Hardcoded
            ### Change It !
            data = []
            #customer_data[i]
            for i in range(0, len(customer_data)):
                data.append({"id": "12"})
            m.data = data
            return m.to_json()
        else:
            m = MessageClass()
            d = json.loads(r.text)
            m.message_text = d["Fault"]["Error"][0]["Detail"]
            return m.to_json()  #"{0}: {1}".format(r.status_code, r.text)
Exemple #20
0
def create_contact_note(args, user_integration):
    agc = Agile_Credentials.objects.get(
        user_integration_id=user_integration.id)
    APIKEY = agc.AGILE_API_KEY
    EMAIL = agc.AGILE_EMAIL_ID
    DOMAIN = agc.AGILE_DOMAIN_NAME
    BASE_URL = "https://" + DOMAIN + ".agilecrm.com/dev/api/"

    subject = args['Subject']
    description = ""
    if args.get('Description', None) is not None:
        description = args['Description']
    email = args['EmailID']

    #making call to search by email and generate the ID
    url = BASE_URL + "contacts/search/email/" + email
    headers = {
        'Accept': 'application/json',
        'content-type': contenttype,
    }

    response = requests.get(url, headers=headers, auth=(EMAIL, APIKEY))
    m = MessageClass()
    m.message_text = str(response.text)
    # print (str(response.text) + "test")
    a = json.loads(response.text)

    id = a['id']
    print(str(id) + "is the converted ID")

    note_data = {
        "subject": subject,
        "description": description,
        "contact_ids": [str(id)]
    }
    url = BASE_URL + 'notes'
    print(url)

    response = requests.post(url,
                             data=json.dumps(note_data),
                             headers=headers,
                             auth=(EMAIL, APIKEY))
    print("Subject:" + subject + "\nDescription: " + description + "\nID: " +
          str(id))
    m = MessageClass()
    m.message_text = "Subject:" + subject + "\nDescription:" + description + "\nID:" + str(
        id)
    return m
Exemple #21
0
def update_incident(request,webhook_id):
    print("In update_incident")
    """
    Webhook function to notify user about update in incident
    """

    # Extracting necessary data
    data = (request.body.decode('utf-8'))
    response_json = json.loads(data)

    page_id = response_json['page']['id']
    unsubscribe = response_json['meta']['unsubscribe']
    incident_id = response_json['incident']['id']
    name = response_json['incident']['name']

    try:
        # Fetching yellowant object
        yellow_obj = YellowUserToken.objects.get(webhook_id=webhook_id)
        print(yellow_obj)
        access_token = yellow_obj.yellowant_token
        print(access_token)
        integration_id = yellow_obj.yellowant_integration_id
        service_application = str(integration_id)
        print(service_application)

        # Creating message object for webhook message

        webhook_message = MessageClass()
        webhook_message.message_text = "Updates in incident with Id : " + str(incident_id) + "\nName : " + str(name)
        attachment = MessageAttachmentsClass()
        attachment.title = "Incident operations"

        button_get_incidents = MessageButtonsClass()
        button_get_incidents.name = "1"
        button_get_incidents.value = "1"
        button_get_incidents.text = "Get all incidents"
        button_get_incidents.command = {
            "service_application": service_application,
            "function_name": 'all_incidents',
            "data": {
            'page_id': page_id
                }
            }

        attachment.attach_button(button_get_incidents)
        webhook_message.data = {"page_id": page_id}
        webhook_message.attach(attachment)
        #print(integration_id)

        # Creating yellowant object
        yellowant_user_integration_object = YellowAnt(access_token=access_token)

        # Sending webhook message to user
        send_message = yellowant_user_integration_object.create_webhook_message(
        requester_application=integration_id,
        webhook_name="incident_updates_webhook", **webhook_message.get_dict())
        return HttpResponse("OK", status=200)

    except YellowUserToken.DoesNotExist:
        return HttpResponse("Not Authorized", status=403)
Exemple #22
0
    def list_user_details(self, args):
        if 'id' not in args:
            return self.generate_simple_message(
                "Please provide parameter 'id' in your command")
        else:
            #Check if Id is a number
            if args['id'].is_digit():
                user_id = int(args['id'])
            else:
                return self.generate_simple_message(
                    "Please provide an integer value for parameter 'id' in your command"
                )

        try:
            #Searching for user with id
            user_object = SiteUsers.objects.get(id=user_id)
        except SiteUsers.DoesNotExist:
            #return error message if user does not exist
            return self.generate_simple_message(
                "User with that id does not exist")

        user_details_message = MessageClass()
        user_details_message.message_text = "User Id - %d, Fullname - %s, Date joined - %s, Subscription - %s" % (
            user_id, user_object.full_name, user_object.date_joined,
            user_object.subscription)
        user_json = serializers.serialize("json", user_object)
        #Adding JSON data to message for use in workflows
        user_details_message.data = user_json
        return user_details_message.to_json()
Exemple #23
0
    def change_user_subcription(self, args):
        if 'id' not in args or 'subscription' not in args:
            return self.generate_simple_message(
                "Please provide parameter 'id' and 'subscription' in your command"
            )
        else:
            #Check if Id is a number
            if args['id'].is_digit():
                user_id = int(args['id'])
            else:
                return self.generate_simple_message(
                    "Please provide an integer value for parameter 'id' in your command"
                )

        try:
            #Searching for user with id
            user_object = SiteUsers.objects.get(id=user_id)
            #changing subscription value
            user_object.subscription = args['subscription']
        except SiteUsers.DoesNotExist:
            #return error message if user does not exist
            return self.generate_simple_message(
                "User with that id does not exist")

        user_details_message = MessageClass()
        user_details_message.message_text = "User subscription changed"
        user_json = serializers.serialize("json", user_object)
        #Adding JSON data to message for use in workflows
        user_details_message.data = user_json
        return user_details_message.to_json()
Exemple #24
0
def close_incident(args, user_integration):
    access_token_object = Servicenow_model.objects.get(
        user_integration=user_integration.id)
    access_token = access_token_object.access_token

    headers = {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + access_token
    }
    sys_id = args.get('sys_id')
    close_code = args.get('close_code')
    close_notes = args.get('close_notes')
    body = {
        "close_code": close_code,
        "close_notes": close_notes,
        "state": "7",
        "caller_id": sys_id,
    }

    instance = access_token_object.instance
    url = " https://" + instance + ".service-now.com/api/now/table/incident/" + sys_id
    response = requests.put(url=url, headers=headers, data=json.dumps(body))

    message = MessageClass()
    message.message_text = "Incident Closed"

    return message
Exemple #25
0
def modify_state(args, user_integration):

    access_token_object = Servicenow_model.objects.get(
        user_integration=user_integration.id)
    access_token = access_token_object.access_token

    headers = {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + access_token
    }

    sys_id = args.get('sys_id')
    new_state = int(args.get('state'))
    body = {
        "incident_state": new_state,
        "state": new_state,
    }

    instance = access_token_object.instance
    url = " https://" + instance + ".service-now.com/api/now/table/incident/" + sys_id
    response = requests.put(url=url, headers=headers, data=json.dumps(body))
    message = MessageClass()
    message.message_text = "Incident state changed"

    return message
Exemple #26
0
def startGame(args,user_integration):


    object = UserIntegration.objects.get(yellowant_integration_id=user_integration.yellowant_integration_id)
    board = chess.Board()
    object.board_state = INITIAL_BOARD + INITIAL_BOARD_REST
    object.save()
    print("inside start game")
    print(user_integration.id)
    m = MessageClass()
    color = args['Color']
    # if color == "White":
    #     MOVE_FLAG = 0
    # else:
    #     MOVE_FLAG = 1
    #
    # #board = chess.Board()

    m.message_text = "You chose " + color
    attachment = MessageAttachmentsClass()

    print(color + " to move")

    if (color=="Black"):
        m = playComputer(args,user_integration)
        return m

    print(IMAGE_URL + INITIAL_BOARD)
    attachment.image_url = IMAGE_URL + INITIAL_BOARD
    field1 = AttachmentFieldsClass()
    field1.title = "Move"
    field1.value = color + " to move"
    attachment.attach_field(field1)
    button = MessageButtonsClass()
    button.text = "Make move"
    button.value = "Make move"
    button.name = "Make move"
    button.command = {
        "service_application": str(user_integration.yellowant_integration_id),
        "function_name": "makemove",
        "inputs": ["move"],
        "data": {"move": "testing"},
    }
    attachment.attach_button(button)

    button1 = MessageButtonsClass()
    button1.text = "Play Computer"
    button1.value = "Play Computer"
    button1.name = "Play Computer"
    button1.command = {"service_application": str(user_integration.yellowant_integration_id), "function_name": "playcomputer",
                       "data": {"move": "testing"},
                      }
    attachment.attach_button(button1)

    m.attach(attachment)


    #m.image_url = "http://www.fen-to-image.com/image/rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR"

    return m
Exemple #27
0
    def all_page_ids(self,args):
        '''
        Get all page ids for the user
        Basic inactive function to get dynamic inputs in  all other functions.
        '''

        sot = self.statuspage_access_token_object
        print(sot.user_integration_id)
        page_objects = PageDetail.objects.filter(user_integration_id=sot)


        m = MessageClass()
        data = []

        m.message_text = "Here are your pages"            #:\n" if len(page_objects) > 0 else "You don't have any pages."
        for page_object in page_objects:
            url = (settings.SP_API_BASE1 + page_object.page_id + ".json")
            response = requests.get(url, headers=self.headers)
            response_json = response.json()
            m.message_text += "{} - {}\n".format(response_json["name"], page_object.page_id)
            data.append({"name": response_json["name"],"page_id":str(page_object.page_id)})
        # m = MessageClass()
        # data = []
        # data.append({"page_id":"dfdsdfvd"})
        # m.message_text = "Lol"

        m.data = data
        print(m.data)
        return m.to_json()
Exemple #28
0
    def Collectors_Available(self, args):
        print("In view_details")
        survey_id = args["SurveyId"]

        url = "https://api.surveymonkey.com/v3/surveys/%s/collectors"%(survey_id)
        message = MessageClass()
        result = "Collectors available are: \n"
        try:
            response = requests.get(url, headers=self.headers)
            response_json = response.json()
            data = response_json["data"]
            send_data = {\
            "collectors":[]\
            }
            for i in range(len(data)):
                obj = data[i]
                name = obj["name"]
                id = obj["id"]
                send_data["collectors"].append({"id":id, "name":name})
                result = result + str(i+1)+": "+ name+" "+ "ID is: "+ id+"\n"
            message.data = send_data
            message.message_text = result
            print(send_data)

            # use inbuilt sdk method to_json to return message in a json format accepted by YA
            return message.to_json()
        except Exception as e:
            print(str(e))
            traceback.print_exc()
Exemple #29
0
    def Survey_Lang_Available(self, args):
        # Return the available languages in which the Survey can be translated.
        print("In SurveyLangAvailable")
        survey_id = args["Survey-ID"]

        url = "https://api.surveymonkey.com/v3/surveys/%s/languages"%(survey_id)
        response = requests.get(url, headers=self.headers)
        response_json = response.json()
        print(response_json)
        data = response_json["data"]
        message = MessageClass()
        result = "Languages available are: \n"
        for i in range(len(data)):
            obj = data[i]
            lang = obj["name"]
            id = obj["id"]
            result = result + lang + " " + "ID is: "+ id+ "\n"
        message.message_text = result

        # use inbuilt sdk method to_json to return message in a json format accepted by YA
        return message.to_json()

    # def Collectors(self, args):
    #     print("In collectors")
    #     CollectorId = args["CollectorId"]
    #
    #     url = "https://api.surveymonkey.com/v3/collectors/%s"%(CollectorId)
    #     response = requests.get(url, headers=self.headers)
    #     response_json = response.json()
    #
    #     print(response_json)
    #     return "Hey"
Exemple #30
0
    def get_organization(self, args):
        """
            This function gets the ID and the name of the organization. This is a picklist function
            used by all other functions
        """
        headers = {
            "Content-Type":
            "application/json",
            "Authorization":
            "Zoho-oauthtoken" + " " + self.zohoinvoice_access_token
        }
        url = settings.ZOHO_ORGANIZATION_URL
        response = requests.get(url, headers=headers)
        # print(response.text)
        # print(type(response))
        response_json = response.json()
        # print(response_json)
        data = response_json['organizations']

        message = MessageClass()
        message.message_text = "Organization list:"

        name_list = {'org': []}
        for i in data:
            name_list['org'].append({
                "id": str(i['organization_id']),
                "name": str(i['name'])
            })
        message.data = name_list
        print(message.data)
        return message.to_json()
def responsewebhook(request, hash_str=""):
    """Whenever a new response is completed the user gets notified"""
    try:
        ya_obj = YellowUserToken.objects.get(webhook_id=hash_str)
    except YellowUserToken.DoesNotExist:
        return HttpResponse("Not Authorized", status=403)

    try:
        data_obj = json.loads(request.body)
        print(data_obj)
        notification_type = data_obj['event_type']
        if notification_type == "response_completed":
            message = MessageClass()
            message.message_text = "New survey response completed"
            message.data = data_obj
            yauser_integration_object = YellowAnt(
                access_token=ya_obj.yellowant_token)

            send_message = yauser_integration_object.create_webhook_message(\
            requester_application=ya_obj.yellowant_intergration_id, \
            webhook_name="response_completed", **message.get_dict())

        return HttpResponse("webhook_receiver/webhook_receiver/")
    except Exception as e:
        print(str(e))
        return HttpResponse("Empty body")
def attach_disk(args, user_integration):
    message = MessageClass()
    GROUP_NAME = args.get("Resource-Group")
    VM_NAME = args.get("vm_name")
    DISK_NAME = args.get("disk_name")

    credentials, subscription_id = get_credentials(user_integration)
    compute_client = ComputeManagementClient(credentials, subscription_id)

    virtual_machine = compute_client.virtual_machines.get(GROUP_NAME, VM_NAME)
    print('Starting attachment')
    # Attach data disk
    data_disk = compute_client.disks.get(GROUP_NAME, DISK_NAME)
    print('\nGet Virtual Machine by Name')
    virtual_machine = compute_client.virtual_machines.get(GROUP_NAME, VM_NAME)
    # Attach data disk
    print('\nAttach Data Disk')
    virtual_machine.storage_profile.data_disks.append({
        'lun':
        12,
        'name':
        data_disk.name,
        'create_option':
        DiskCreateOption.attach,
        'managed_disk': {
            'id': data_disk.id
        }
    })
    async_disk_attach = compute_client.virtual_machines.create_or_update(
        GROUP_NAME, virtual_machine.name, virtual_machine)
    #async_disk_attach.wait()
    message.message_text = "Disk attached to VM"

    return message
Exemple #33
0
    def get_all_shared_folders(self,args):

        print("In get_all_shared_folders")

        endpoint = "https://api.dropboxapi.com/2/sharing/list_folders"
        headers = {
            'Authorization': 'Bearer ' + str(self.dropbox_access_token),
            'Content-Type': 'application/json',
        }

        data = {"limit": 100,"actions": []}

        # Consuming the API
        r = requests.post(endpoint, headers=headers, json=data)

        # Response check
        if (r.status_code == requests.codes.ok):
            response = r.content.decode("utf-8")
            response = json.loads(response)
            print(response)

            #Creating message from YA SDK
            message = MessageClass()
            message.message_text = "All shared file details :"

            attachment = MessageAttachmentsClass()

            for i in range(0,len(response['entries'])):
                field1 = AttachmentFieldsClass()
                field1.title = "Name :"
                field1.value = response['entries'][i]['name']
                attachment.attach_field(field1)

                field2 = AttachmentFieldsClass()
                field2.title = "Preview URL :"
                field2.value = response['entries'][i]['preview_url']
                attachment.attach_field(field2)

            message.attach(attachment)
            return message.to_json()
        else:
            m = MessageClass()
            print(r.content.decode("utf-8"))
            d = r.content.decode("utf-8")
            m.message_text = "{0}: {1}".format(r.status_code, r.text)
            return m.to_json()
Exemple #34
0
    def download_file(self,args):
        print("In download_file")
        # Fetching the arguments passed from slack
        path = args['path']

        # API call parameters for creating a customer

        headers = {
            'Authorization': 'Bearer ' + self.dropbox_access_token,
            'Content-Type': 'application/json',
        }

        data = {"path": path}

        # Consuming the API
        r = requests.post('https://api.dropboxapi.com/2/files/get_temporary_link', headers=headers, json=data)

        # Response check
        if (r.status_code == requests.codes.ok):

            # Getting the response
            response = r.content.decode("utf-8")
            response = json.loads(response)
            print(response)

            # Creating message using YA SDK
            message = MessageClass()
            message.message_text = "Temporary link to download :"
            attachment = MessageAttachmentsClass()

            field1 = AttachmentFieldsClass()
            field1.title = "This link expires in 4 Hr :"
            field1.value = response['link']
            attachment.attach_field(field1)

            message.attach(attachment)
            return message.to_json()
        else:
            m = MessageClass()
            print(r.content.decode("utf-8"))
            d = r.content.decode("utf-8")
            m.message_text = "{0}: {1}".format(r.status_code, r.text)
            return m.to_json()
Exemple #35
0
    def get_all_file_requests(self,args):

        print("In get_all_file_requests")

        # API call parameters for creating an invoice
        headers = {
            'Authorization': 'Bearer ' + str(self.dropbox_access_token),
        }

        # Consuming the API
        r = requests.post('https://api.dropboxapi.com/2/file_requests/list', headers=headers)

        # Response check
        if r.status_code == requests.codes.ok:
            response = r.content.decode("utf-8")
            response = json.loads(response)
            print(response)

            # Creating message from YA SDK
            message = MessageClass()
            attachment = MessageAttachmentsClass()

            if len(response) == 0:
                message.message_text = "No File Requests"
                message.attach(attachment)
                return message.to_json()
            else:
                message.message_text = "All file requests :"
                message.attach(attachment)
                return message.to_json()

        else:
            m = MessageClass()
            print(r.content.decode("utf-8"))
            d = r.content.decode("utf-8")
            m.message_text = "{0}: {1}".format(r.status_code, r.text)
            return m.to_json()
Exemple #36
0
    def search(self,args):
        print("In search")
        print(args)

        path = args['path']
        query = args['search']

        headers = {
            'Authorization': 'Bearer ' + self.dropbox_access_token,
            'Content-Type': 'application/json',
        }

        if path == '/':
            path = ""

        data = {"path": path,"query": query,"start": 0,"max_results": 100,"mode": "filename"}


        # Consuming the API
        r = requests.post('https://api.dropboxapi.com/2/files/search', headers=headers, json=data)

        # Response check
        if r.status_code == requests.codes.ok:
            print("---------------")
            # Getting response in JSON
            r = r.content.decode("utf-8")
            response = json.loads(r)
            print(response)

            # Creating message using YA SDK
            message = MessageClass()

            if len(response['matches']) == 0:
                message.message_text = "No matches !\nPlease search again."
                return message.to_json()

            message.message_text = "Matches :"
            attachment = MessageAttachmentsClass()

            for i in range(0, len(response['matches'])):

                field1 = AttachmentFieldsClass()
                field1.title = "Path:"
                field1.value = response['matches'][i]['metadata']['path_display']
                attachment.attach_field(field1)

                field2 = AttachmentFieldsClass()
                field2.title = "Name :"
                field2.value = response['matches'][i]['metadata']['name']
                attachment.attach_field(field2)

                field3 = AttachmentFieldsClass()
                field3.title = "Type :"
                field3.value = response['matches'][i]['metadata']['.tag']
                attachment.attach_field(field3)

            message.attach(attachment)
            return message.to_json()
        else:
            print("Error")
            m = MessageClass()
            print(r.content.decode("utf-8"))
            d = r.content.decode("utf-8")
            m.message_text = "{0}: {1}".format(r.status_code, r.text)
            return m.to_json()
Exemple #37
0
    def get_shared_links(self,args):

        print("In get_shared_links")

        flag = False
        # Arguments passed from slack
        # For the optional argument
        try:
            path = args['path']
            flag = True
        except:
            flag = False

        headers = {
            'Authorization': 'Bearer ' + self.dropbox_access_token,
            'Content-Type': 'application/json',
        }


        endpoint = 'https://api.dropboxapi.com/2/sharing/list_shared_links'

        if flag == True:
            data = {"path": path}
        else:
            data = {}

        # Consuming the API
        r = requests.post(endpoint, headers=headers, json=data)

        # Response check
        if r.status_code == requests.codes.ok:

            # Getting response in JSON
            response = r.content.decode("utf-8")
            response = json.loads(response)
            print(response)
            links = response['links']

            message = MessageClass()
            message.message_text = "List of all shared links :"
            attachment = MessageAttachmentsClass()

            for i in range(0,len(links)):
                try:
                    field1 = AttachmentFieldsClass()
                    field1.title = "Name :"
                    field1.value = links[i]['name']
                    attachment.attach_field(field1)
                except KeyError : 'name'

                # field2 = AttachmentFieldsClass()
                # field2.title = "Type :"
                # field2.value = links[i]['.tag']
                # attachment.attach_field(field2)

                field3 = AttachmentFieldsClass()
                field3.title = "Preview URL :"
                field3.value = links[i]['url']
                attachment.attach_field(field3)

            message.attach(attachment)
            return message.to_json()
        else:
            m = MessageClass()
            print(r.content.decode("utf-8"))
            d = r.content.decode("utf-8")
            m.message_text = "{0}: {1}".format(r.status_code, r.text)
            return m.to_json()
Exemple #38
0
    def get_all_folders(self,args):

        print("In get_all_folders")

        # API call parameters for getting all customers
        path = args['path']

        headers = {
            'Authorization': 'Bearer ' + self.dropbox_access_token,
            'Content-Type': 'application/json',
        }

        if path == '/':
            path = ""

        data = {"path": path,
               "recursive": True,
               "include_media_info": False,
               "include_deleted": False,
               "include_has_explicit_shared_members": False,
               "include_mounted_folders": True}

        # Consuming the API
        r = requests.post('https://api.dropboxapi.com/2/files/list_folder', headers=headers, json=data)

        # Error check
        if r.status_code == requests.codes.ok:

            # Getting response in JSON format
            response = r.content.decode("utf-8")
            response = json.loads(response)
            print(response)

            message = MessageClass()
            message.message_text = "List files and folders :"
            attachment = MessageAttachmentsClass()

            for i in range(0, len(response['entries'])):

                field1 = AttachmentFieldsClass()
                field1.title = "Name :"
                field1.value = response['entries'][i]['name']
                attachment.attach_field(field1)

                field2 = AttachmentFieldsClass()
                field2.title = "Type :"
                field2.value = response['entries'][i]['.tag']
                attachment.attach_field(field2)

            attachment2 = MessageAttachmentsClass()

            if response['has_more'] == True:
                button = MessageButtonsClass()
                button.name = "1"
                button.value = "1"
                button.text = "Get more files and folders"
                button.command = {
                    "service_application": str(self.user_integration.yellowant_integration_id),
                    "function_name": 'get_more_folders',
                    "data": {"cursor": response['cursor']}
                }
                attachment2.attach_button(button)
                message.attach(attachment)
                message.attach(attachment2)
                return message.to_json()

            message.attach(attachment)
            return message.to_json()
        else:
            m = MessageClass()
            print(r.content.decode("utf-8"))
            d = r.content.decode("utf-8")
            m.message_text = "{0}: {1}".format(r.status_code, r.text)
            return m.to_json()
Exemple #39
0
    def get_more_folders(self,args):

        print("In 	get_more_folders")

        # Fetching arguments passed from Slack
        cursor = args['cursor']

        # API call parameters for getting customer details
        headers = {
            'Authorization': 'Bearer ' + self.dropbox_access_token,
            'Content-Type': 'application/json',
        }

        data = {"cursor": cursor}
        re = requests.post('https://api.dropboxapi.com/2/files/list_folder/continue', headers=headers,
                           json=data)

        if re.status_code == requests.codes.ok:

            res = re.content.decode("utf-8")
            res = json.loads(res)
            print("----")
            print(res)

            message = MessageClass()

            message.message_text = "More files and folders :"
            attachment = MessageAttachmentsClass()

            for i in range(0, len(res['entries'])):

                field1 = AttachmentFieldsClass()
                field1.title = "Name :"
                field1.value = res['entries'][i]['name']
                attachment.attach_field(field1)

                field2 = AttachmentFieldsClass()
                field2.title = "Type :"
                field2.value = res['entries'][i]['.tag']
                attachment.attach_field(field2)

            attachment2 = MessageAttachmentsClass()

            if res['has_more'] == True:
                button = MessageButtonsClass()
                button.name = "1"
                button.value = "1"
                button.text = "Get more files and folders"
                button.command = {
                    "service_application": str(self.user_integration.yellowant_integration_id),
                    "function_name": 'get_more_folders',
                    "data": {"cursor": res['cursor']}
                }
                attachment2.attach_button(button)
                message.attach(attachment)
                message.attach(attachment2)
                return message.to_json()

            message.attach(attachment)
            return message.to_json()
        else:
            m = MessageClass()
            print(re.content.decode("utf-8"))
            d = re.content.decode("utf-8")
            m.message_text = "{0}: {1}".format(re.status_code, re.text)
            return m.to_json()
Exemple #40
0
def webhook(request, hash_str=""):

    '''Respond to the webhook verification (GET request) by echoing back the challenge parameter.'''
    print("Inside webhook")

    if request.method == "GET":
        print("Inside webhook validation")
        challenge = request.GET.get('challenge',None)

        if challenge != None:
            return HttpResponse(challenge,status=200)
        else:
            return HttpResponse(status=400)

    else:
        print("In notifications")
        webhook_id = hash_str
        data =  (request.body.decode('utf-8'))
        response_json = json.loads(data)
        print(response_json)

        data = {
	            "users": [],
	            "accounts": []
            }

        try:
            yellow_obj = YellowUserToken.objects.get(webhook_id=webhook_id)
            print(yellow_obj)
            access_token = yellow_obj.yellowant_token
            print(access_token)
            integration_id = yellow_obj.yellowant_integration_id
            service_application = str(integration_id)
            print(service_application)

            # Creating message object for webhook message

            webhook_message = MessageClass()
            webhook_message.message_text = "File/Folder updated !"
            attachment = MessageAttachmentsClass()
            attachment.title = "Updated file/folder details :"

            for i in range(0,len(response_json['list_folder']['accounts'])):
                field1 = AttachmentFieldsClass()
                field1.title = "Id : "
                field1.value = response_json['list_folder']['accounts'][i]
                data["accounts"].append(response_json['list_folder']['accounts'][i])
                attachment.attach_field(field1)

            attachment2 = MessageAttachmentsClass()
            attachment2.title = "User update details :"

            for i in range(0, len(response_json['delta']['users'])):
                field2 = AttachmentFieldsClass()
                field2.title = "Id : "
                field2.value = response_json['delta']['users'][i]
                data["users"].append(response_json['delta']['users'][i])
                attachment2.attach_field(field2)

            button = MessageButtonsClass()
            button.name = "1"
            button.value = "1"
            button.text = "Get all files and folders "
            button.command = {
                "service_application": service_application,
                "function_name": 'get_all_folders',
                "data" : {"path": "",
                "recursive": True,
                "include_media_info": False,
                "include_deleted": False,
                "include_has_explicit_shared_members": False,
                "include_mounted_folders": True}
                }

            attachment.attach_button(button)
            webhook_message.attach(attachment)
            webhook_message.attach(attachment2)
            #print(integration_id)
            print("-----------")
            print(data)
            print("------------")
            webhook_message.data = data
            # Creating yellowant object
            yellowant_user_integration_object = YellowAnt(access_token=access_token)

            # Sending webhook message to user
            send_message = yellowant_user_integration_object.create_webhook_message(
                requester_application=integration_id,
                webhook_name="files_folders_update", **webhook_message.get_dict())

            return HttpResponse("OK", status=200)

        except YellowUserToken.DoesNotExist:
            return HttpResponse("Not Authorized", status=403)
Exemple #41
0
    def share_folder(self, args):


        print("In share_folder")

        # Arguments from slack
        path = args["path"]
        member_policy = args['member_policy']
        shared_link_policy = args['shared_link_policy']

        if member_policy != 'anyone' and member_policy != "team":
            m = MessageClass()
            m.message_text = "Invalid value in member_policy argument"
            return m.to_json()

        if shared_link_policy != 'anyone' and shared_link_policy != "team":
            m = MessageClass()
            m.message_text = "Invalid value in shared_link_policy argument"
            return m.to_json()

        # API call parameters for getting all customer ids
        headers = {
            'Authorization': 'Bearer ' + self.dropbox_access_token,
            'Content-Type': 'application/json',
        }

        data = {"path": path,"acl_update_policy": "editors","force_async": False,"member_policy": member_policy ,"shared_link_policy": shared_link_policy}


        # Consuming the API
        r = requests.post('https://api.dropboxapi.com/2/sharing/share_folder', headers=headers, json=data)

        # Response check
        if r.status_code == requests.codes.ok:

            # Fetching response in JSON
            r = r.content.decode("utf-8")
            response = json.loads(r)
            print(response)

            # Creating a message object using YA SDK functions
            m = MessageClass()
            m.message_text = "Details for the shared folder : "
            attachment = MessageAttachmentsClass()

            field1 = AttachmentFieldsClass()
            field1.title = "Shared link : "
            field1.value = response['preview_url']
            attachment.attach_field(field1)

            field2 = AttachmentFieldsClass()
            field2.title = "Visibility :"
            field2.value = response['policy']['shared_link_policy']['.tag']
            attachment.attach_field(field2)

            field3 = AttachmentFieldsClass()
            field3.title = "Name :"
            field3.value = response['name']
            attachment.attach_field(field3)
            m.attach(attachment)
            return m.to_json()

        else:
            print("Error")
            m = MessageClass()
            print(r.content.decode("utf-8"))
            d = r.content.decode("utf-8")
            m.message_text = "{0}: {1}".format(r.status_code, r.text)
            return m.to_json()
Exemple #42
0
    def create_folder(self, args):

        print("In create_folder")
        print(args)

        path = args['path']
        autorename = args['autorename']

        if autorename != 'true' and autorename != 'false':
            m = MessageClass()
            m.message_text = "Invalid value in autorename argument"
            return m.to_json()

        headers = {
            'Authorization': 'Bearer ' + self.dropbox_access_token,
            'Content-Type': 'application/json',
        }

        if autorename == 'true':
            autorename = True
        else:
            autorename = False

        data = {"path": path,"autorename": autorename}

        # Consuming the API
        r = requests.post('https://api.dropboxapi.com/2/files/create_folder_v2', headers=headers, json=data)

        # Response check
        if r.status_code == requests.codes.ok:
            print("---------------")
            # Getting response in JSON
            r = r.content.decode("utf-8")
            response = json.loads(r)
            print(response)

            #Creating message using YA SDK
            message = MessageClass()
            attachment = MessageAttachmentsClass()

            attachment2 = MessageAttachmentsClass()
            message.message_text = "New folder successfully created"
            button = MessageButtonsClass()
            button.name = "1"
            button.value = "1"
            button.text = "Get folder details"
            button.command = {
                "service_application": str(self.user_integration.yellowant_integration_id),
                "function_name": 'get_all_folders',
                "data" :{"path": response['metadata']['path_display'],
               "recursive": True,
               "include_media_info": False,
               "include_deleted": False,
               "include_has_explicit_shared_members": False,
               "include_mounted_folders": True}
            }
            attachment2.attach_button(button)
            message.attach(attachment)
            message.attach(attachment2)
            return message.to_json()
        else:
            print("Error")
            m = MessageClass()
            print(r.content.decode("utf-8"))
            d = r.content.decode("utf-8")
            m.message_text = "{0}: {1}".format(r.status_code, r.text)
            return m.to_json()