コード例 #1
0
ファイル: test_login.py プロジェクト: xiaotiankeyi/portTest
    def loginfunc(self, key, key2, key3, key4, num):
        """登录成功"""
        row1 = num

        url = self.obj.get_value(row1,
                                 self.obj.get_host()) + self.obj.get_value(
                                     row1, self.obj.get_urlxpath())

        # m = MultipartEncoder(
        # fields=eval(self.obj.get_value(row1, self.obj.get_params())))  #
        # 获取需要发送的数据
        m = MultipartEncoder(fields={key: key2, key3: key4})

        response = requests.request(method=self.obj.get_value(
            row1, self.obj.get_method()),
                                    url=url,
                                    verify=False,
                                    data=m,
                                    headers={'Content-Type': m.content_type})

        assert self.obj.get_value(
            row1, self.obj.get_verifyID()) in response.text  # 获取预期判断值
コード例 #2
0
ファイル: image_api.py プロジェクト: speri203/taudrones
    def _upload_uniq_images_single_req(self, func_item_to_byte_stream, hashes_items_to_upload):
        """
        Upload images (binary data) to server with single request.
        Expects unique images that aren't exist at server.
        :param func_item_to_byte_stream: converter for "item" to byte stream
        :param hashes_items_to_upload: list of pairs (hash, item)
        :return: list of hashes for successfully uploaded items
        """
        content_dict = {}
        for idx, (_, item) in enumerate(hashes_items_to_upload):
            content_dict["{}-file".format(idx)] = (str(idx), func_item_to_byte_stream(item), 'image/*')
        encoder = MultipartEncoder(fields=content_dict)
        resp = self._api.post('images.bulk.upload', encoder)

        resp_list = json.loads(resp.text)
        remote_hashes = [d['hash'] for d in resp_list if 'hash' in d]
        if len(remote_hashes) != len(hashes_items_to_upload):
            problem_items = [(hsh, item, resp['errors'])
                             for (hsh, item), resp in zip(hashes_items_to_upload, resp_list) if resp.get('errors')]
            logger.warn('Not all images were uploaded within request.', extra={
                'total_cnt': len(hashes_items_to_upload), 'ok_cnt': len(remote_hashes), 'items': problem_items})
        return remote_hashes
コード例 #3
0
def request_resumable_upload(filepath, headers, upload_url_base, parent_dir,
                             is_ajax):
    write_file(chunked_part1_path, chunked_part1_content)
    write_file(chunked_part2_path, chunked_part2_content)

    m = MultipartEncoder(
        fields={
            'parent_dir':
            parent_dir,
            'file': (resumable_file_name, open(filepath, 'rb'),
                     'application/octet-stream')
        })
    params = {'ret-json': '1'}
    headers["Content-type"] = m.content_type
    if is_ajax:
        response = requests.post(upload_url_base, headers=headers, data=m)
    else:
        response = requests.post(upload_url_base,
                                 headers=headers,
                                 data=m,
                                 params=params)
    return response
コード例 #4
0
ファイル: deploy.py プロジェクト: sintrb/auto-wsgi
def upload_zip_with_progress():
    from requests_toolbelt import MultipartEncoder, MultipartEncoderMonitor
    global upurl
    data = {
        'config': json.dumps(config),
        'file': (os.path.basename(zippath), open(zippath,
                                                 'rb'), 'application/zip')
    }
    total = os.path.getsize(zippath)
    hodel = {
        'proc': 0,
        'last': 0,
    }

    def on_progress(monitor):
        nproc = min(100, int(monitor.bytes_read * 100 / total) if total else 0)
        nlast = time.time()
        oproc = hodel['proc']
        olast = hodel['last']
        if (nproc - oproc) > 5 or (nlast - olast) > 1:
            proc = '%s%%' % nproc
            hodel['proc'] = nproc
            hodel['last'] = nlast
            barw = 50
            prow = int(barw * nproc / 100)
            _print('\ruploading... [%s%s] %s' % ('#' * prow, '-' *
                                                 (barw - prow), proc),
                   end='')

    e = MultipartEncoder(fields=data)
    m = MultipartEncoderMonitor(e, on_progress)
    _print('upload', zippath, '->', upurl)
    res = requests.post(upurl,
                        data=m,
                        headers={
                            'Content-Type': m.content_type
                        }).text
    _print()
    _print(res)
コード例 #5
0
    def upload(self, endpoint, data, callback=None):

        if self.bearer is None:
            return False

        m = MultipartEncoder(fields=data)
        if callback is not None:
            m = MultipartEncoderMonitor(m, callback)

        try:
            resp = requests.post(self.url(endpoint),
                                 data=m,
                                 headers={
                                     "Content-Type": m.content_type,
                                     "Accept": "application/json",
                                     "Authorization": "Bearer " + self.bearer
                                 })
            return self.response(resp)

        except:
            self.show_error("Connection error")
            return False
コード例 #6
0
    def upload_slice(self,
                     io: IO,
                     callback: Callable[[MultipartEncoderMonitor],
                                        None] = None):
        url = PcsNode.File.url()
        params = {
            "method": "upload",
            "type": "tmpfile",
            "BDUSS": self._bduss,
        }

        m = MultipartEncoder(fields={"file": ("file", io, "")})
        monitor = MultipartEncoderMonitor(m, callback=callback)

        resp = self._request(
            Method.Post,
            url,
            params=params,
            data=monitor,
            timeout=(3, 9),  # (connect timeout, read timeout)
        )
        return resp.json()
コード例 #7
0
def post_multipart_data(session,
                        guid,
                        file_name,
                        file_size,
                        last_modified_date,
                        file_field,
                        chunk_field=[]):
    fields = [("token", ""), ("guid", guid), ("id", "WU_FILE_0"),
              ("name", file_name), (
                  "type",
                  "application/zip",
              ), ("lastModifiedDate", last_modified_date), ("size", file_size)]
    fields.extend(chunk_field)
    fields.append(file_field)
    encoder = MultipartEncoder(fields=fields, boundary=get_boundary())
    encoder = MultipartEncoderMonitor(encoder, my_callback)

    res = session.post(
        uri,
        headers={
            "Accept":
            "*/*",
            "Accept-Encoding":
            "gzip, deflate",
            "Accept-Language":
            "en-US,en;q=0.5",
            'Content-Type':
            encoder.content_type,
            "Host":
            "dlload.com",
            "Origin":
            "https://dlload.com",
            "Referer":
            "https://dlload.com/disk",
            "User-Agent":
            "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0"
        },
        data=encoder)
    print('\n', res.content)
コード例 #8
0
    def submit(self):

        self.submit_url = self._get_submit_url()

        mkzip(os.getcwd(), PRESUBMIT_FILENAME, self.filenames,
              self.max_zip_size)

        fd = open(PRESUBMIT_FILENAME, "rb")

        m = MultipartEncoder(
            fields={'zipfile': ('student.zip', fd, 'application/zip')})
        monitor = MultipartEncoderMonitor(m, self.upload_progress_callback)

        try:
            r = self.s.post(self.submit_url,
                            data=monitor,
                            headers={'Content-Type': monitor.content_type})
            r.raise_for_status()
        except requests.exceptions.HTTPError as e:
            if r.status_code == 403:
                raise ProjectAssistantSubmissionError(
                    "You don't have access to this project.")
            elif r.status_code in [404, 429, 500]:
                try:
                    response_json = r.json()
                    message = response_json.get(
                        "message") or "An internal server error occurred."
                except:
                    message = "An unknown error occurred"
                raise ProjectAssistantSubmissionError(message)
            else:
                raise

        fd.close()

        self.submission = r.json()

        shutil.move(PRESUBMIT_FILENAME,
                    submission_filename(self.project_name(), self.id()))
コード例 #9
0
ファイル: scanMessenger.py プロジェクト: plomgrading/plom
    def uploadCollidingPage(self, code, test, page, version, sname, fname,
                            md5sum, bundle, bundle_order):
        self.SRmutex.acquire()
        try:
            param = {
                "user": self.user,
                "token": self.token,
                "fileName": sname,
                "test": test,
                "page": page,
                "version": version,
                "md5sum": md5sum,
                "bundle": bundle,
                "bundle_order": bundle_order,
            }
            mime_type = mimetypes.guess_type(sname)[0]
            dat = MultipartEncoder(
                fields={
                    "param": json.dumps(param),
                    "originalImage": (sname, open(fname, "rb"),
                                      mime_type),  # image
                })
            response = self.session.put(
                "https://{}/admin/collidingPages/{}".format(self.server, code),
                data=dat,
                headers={"Content-Type": dat.content_type},
                verify=False,
            )
            response.raise_for_status()
        except requests.HTTPError as e:
            if response.status_code == 401:
                raise PlomAuthenticationException() from None
            else:
                raise PlomSeriousException(
                    "Some other sort of error {}".format(e)) from None
        finally:
            self.SRmutex.release()

        return response.json()
コード例 #10
0
ファイル: SendMessage.py プロジェクト: JiXiangY/JX_Script
 def upload_image(img_path, type):
     header = {"Content-Type": "multipart/form-data"}
     url = "http://" + configure.host + ":" + configure.port + "/uploadImage"
     img = open(img_path, "rb")  # 以2进制方式打开图片
     imageType = "image/jpeg"
     img_name = "temp.jpg"
     if img_path.endswith('.png'):
         imageType = "image/png"
         img_name = "temp.png"
     body = MultipartEncoder({
         "sessionKey": configure.session,
         "img": (img_name, img, imageType),
         "type": type
     })
     #🌿🌿🌿🌿🌿🌿🌿🌿请求头 太尼玛恶心了 这里卡了好几个小时 标记一下 🌿🌿🌿🌿🌿🌿🌿🌿🌿
     header['Content-Type'] = body.content_type
     response = requests.post(url, data=body, headers=header)
     response_json = response.json()
     print(response_json)
     img.close()
     if response_json and len(response_json["url"]) > 0:
         return response_json
コード例 #11
0
    def create_file(self, file_name: str, parent: str = None) -> dict:
        params = {'suppress': 'deduplication'}

        basename = os.path.basename(file_name)
        metadata = {'kind': 'FILE', 'name': basename}
        if parent:
            metadata['parents'] = [parent]
        mime_type = _get_mimetype(basename)
        f = io.BytesIO()

        # basename is ignored
        m = MultipartEncoder(fields=OrderedDict([('metadata', json.dumps(metadata)),
                                                 ('content', (quote_plus(basename), f, mime_type))])
                             )

        ok_codes = [http.CREATED]
        r = self.BOReq.post(self.content_url + 'nodes', params=params, data=m,
                            acc_codes=ok_codes, headers={'Content-Type': m.content_type})

        if r.status_code not in ok_codes:
            raise RequestError(r.status_code, r.text)
        return r.json()
コード例 #12
0
def test_basic_multiple():
    first = ValueTarget()
    second = ValueTarget()
    third = ValueTarget()

    encoder = MultipartEncoder(
        fields={'first': 'foo', 'second': 'bar', 'third': 'baz'}
    )

    parser = StreamingFormDataParser(
        headers={'Content-Type': encoder.content_type}
    )

    parser.register('first', first)
    parser.register('second', second)
    parser.register('third', third)

    parser.data_received(encoder.to_string())

    assert first.value == b'foo'
    assert second.value == b'bar'
    assert third.value == b'baz'
コード例 #13
0
ファイル: seaf-share.py プロジェクト: twei7/seaf-share
def uploadFile1(file_dir, file_name, upload_dir, posturl, parent_dir,
                set_headers):
    print "Uploading: " + str(file_dir + "/" + file_name).replace("//", "/")

    e = MultipartEncoder(
        fields={
            'filename':
            file_name,
            'file': (file_name, open(file_dir + "/" + file_name, 'rb'),
                     'text/plain'),
            'parent_dir':
            parent_dir,
            'relative_path':
            upload_dir
        })
    callback = create_callback(e.len)
    set_params = MultipartEncoderMonitor(e, callback)
    set_headers["Content-type"] = set_params.content_type

    r = requests.post(posturl, data=set_params, headers=set_headers)
    #data = json.loads(r.content)
    callback(-1)
コード例 #14
0
ファイル: iqdb.py プロジェクト: PenguinGUGU/PicImageSearch
 def search_3d(self, url):
     try:
         if url[:4] == 'http':  # 网络url
             datas = {"url": url}
             res = requests.post(self.url_3d,
                                 data=datas,
                                 **self.requests_kwargs)
         else:  # 是否是本地文件
             m = MultipartEncoder(
                 fields={
                     'file': ('filename', open(url, 'rb'),
                              "type=multipart/form-data")
                 })
             headers = {'Content-Type': m.content_type}
             urllib3.disable_warnings()
             res = requests.post(self.url_3d,
                                 headers=headers,
                                 **self.requests_kwargs)
         if res.status_code == 200:
             return IqdbResponse(res.content)
     except Exception as e:
         logger.error(e)
コード例 #15
0
ファイル: loginFunc.py プロジェクト: xiaotiankeyi/portTest
def login():
    """登录成功"""
    obj = HandleExcel()

    row1 = 1

    url = obj.get_value(row1, obj.get_host()) + obj.get_value(
        row1, obj.get_urlxpath())

    m = MultipartEncoder(
        fields=eval(obj.get_value(row1, obj.get_params()))  #获取需要发送的数据
    )

    response = requests.request(method=obj.get_value(row1, obj.get_method()),
                                url=url,
                                verify=False,
                                data=m,
                                headers={'Content-Type': m.content_type})

    assert obj.get_value(row1, obj.get_verifyID()) in response.text  #获取预期判断值
    a = requests.utils.dict_from_cookiejar(response.cookies)  #获取cookie并返回
    return a
コード例 #16
0
def uploadFile(path):
    url = settings['upload_url']
    params = {"key": settings['key'], "result_as": "json"}
    filename = path.split("\\")[-1]
    filename = filename.encode("ascii", errors="ignore").decode()
    fields = {"file": (filename, open(path, 'rb').read())}

    encoder = MultipartEncoder(fields=fields)
    encoderMonitor = MultipartEncoderMonitor(encoder, None)

    headers = {
        "Connection": "Keep-Alive",
        "Content-Type": encoderMonitor.content_type,
        "Keep-Alive": "timeout=10800"
    }

    response = requests.post(url,
                             data=encoderMonitor,
                             headers=headers,
                             params=params)

    return response.text
コード例 #17
0
ファイル: common.py プロジェクト: keshabb/datapane
    def post_files(self, files: FileList, **data: JSON) -> JSON:
        # upload files using custom json-data protocol
        # build the fields
        file_header = {"Content-Encoding": "gzip"}

        def mk_file_fields(field_name: str, f: Path):
            # compress the file, in-place
            # TODO - disable compression where unneeded, e.g. .gz, .zip, .png, etc
            with compress_file(f) as f_gz:
                return (field_name, (f.name, open(f_gz, "rb"), guess_type(f), file_header))

        fields = [mk_file_fields(k, x) for (k, v) in files.items() for x in v]
        fields.append(("json_data", json.dumps(data)))

        e = MultipartEncoder(fields=fields)
        extra_headers = {"Content-Type": f"{e.content_type}; dp-files=True"}
        if e.len > 1e6:  # 1 MB
            log.debug("Using upload monitor")
            fill_char = click.style("=", fg="yellow")
            with click.progressbar(
                length=e.len, width=0, show_eta=True, label="Uploading files", fill_char=fill_char
            ) as bar:

                def f(m: MultipartEncoderMonitor):
                    # update every 100KB
                    m.buf_bytes_read += m.bytes_read - m.prev_bytes_read
                    m.prev_bytes_read = m.bytes_read
                    if m.buf_bytes_read >= 1e5:
                        # print(f"{m.buf_bytes_read=}, {m.prev_bytes_read=}")
                        bar.update(m.buf_bytes_read)
                        m.buf_bytes_read = 0

                m = MultipartEncoderMonitor(e, callback=f)
                m.buf_bytes_read = 0
                m.prev_bytes_read = 0
                r = self.session.post(self.url, data=m, headers=extra_headers, timeout=self.timeout)
        else:
            r = self.session.post(self.url, data=e, headers=extra_headers, timeout=self.timeout)
        return self._process_res(r)
コード例 #18
0
ファイル: bare.py プロジェクト: kostola/pytbo
    def sendPhoto(self,
            chat_id,
            photo_id=None,
            photo_file=None,
            caption=None,
            disable_notification=None,
            reply_to_message_id=None,
            reply_markup=None):
        """
        Use this method to send photos.
        On success, the sent Message is returned.

        For more details read the `Telegram docs <https://core.telegram.org/bots/api#sendphoto>`_.
        """

        p = {
            'chat_id': chat_id
        }
        if photo_file is not None:
            p['photo'] = self.__input_file_tuple(photo_file)
        elif photo_id is not None:
            p['photo'] = photo_id
        else:
            raise ApiRequestError('photo_id and photo_file cannot be both None')
        if caption is not None:
            p['caption'] = caption
        if disable_notification is not None:
            p['disable_notification'] = disable_notification
        if reply_to_message_id is not None:
            p['reply_to_message_id'] = reply_to_message_id
        if reply_markup is not None:
            p['reply_markup'] = reply_markup.to_json()
        r = None
        if photo_file is not None:
            m = MultipartEncoder(p)
            r = requests.post(self.__base_url_for('sendPhoto'), data=m, headers={'Content-Type': m.content_type})
        else:
            r = requests.get(self.__base_url_for('sendPhoto'), params=p)
        return self.__handle_object_response(r, 'sendPhoto', Message)
コード例 #19
0
def upload(abs, fname):
    server = random.randint(1, 120)
    total = check_size(abs)
    url = "https://www{}.zippyshare.com/upload".format(server)
    f = open(abs, 'rb')
    try:
        data = {'file': (fname, f)}
        pb = tqdm(total=total, unit='B', unit_scale=True, miniters=1)
        multi = MultipartEncoder(fields=data)
        monitor = MultipartEncoderMonitor(
            multi, lambda multi: pb.update(monitor.bytes_read - pb.n))
        if cfg.private:
            data['private'] = "true"
        else:
            data['notprivate'] = "true"
        s.headers.update({'Content-type': monitor.content_type})
        r = s.post(url, data=monitor)
        r.raise_for_status()
    finally:
        pb.close()
        f.close()
    return r.text
コード例 #20
0
ファイル: bare.py プロジェクト: kostola/pytbo
    def sendDocument(self,
            chat_id,
            document_id=None,
            document_file=None,
            caption=None,
            disable_notification=None,
            reply_to_message_id=None,
            reply_markup=None):
        """
        Use this method to send general files. On success, the sent Message is returned.
        Bots can currently send files of any type of up to 50 MB in size, this limit may be changed in the future.

        For more details read the `Telegram docs <https://core.telegram.org/bots/api#senddocument>`_.
        """

        p = {
            'chat_id': chat_id
        }
        if document_file is not None:
            p['document'] = self.__input_file_tuple(document_file)
        elif document_id is not None:
            p['document'] = document_id
        else:
            raise ApiRequestError('document_id and document_file cannot be both None')
        if caption is not None:
            p['caption'] = caption
        if disable_notification is not None:
            p['disable_notification'] = disable_notification
        if reply_to_message_id is not None:
            p['reply_to_message_id'] = reply_to_message_id
        if reply_markup is not None:
            p['reply_markup'] = reply_markup.to_json()
        r = None
        if document_file is not None:
            m = MultipartEncoder(p)
            r = requests.post(self.__base_url_for('sendDocument'), data=m, headers={'Content-Type': m.content_type})
        else:
            r = requests.get(self.__base_url_for('sendDocument'), params=p)
        return self.__handle_object_response(r, 'sendDocument', Message)
コード例 #21
0
    def upload_UploadFile(self, filePath, folderKey="myfiles", x_filename=""):
        self.checkSessionToken()

        boundary_value = uuid.uuid4().hex
        content_type = mimetypes.guess_type(filePath)

        fp = open(filePath, 'rb')

        m = MultipartEncoder(fields={
            'fileUpload':
            (os.path.basename(filePath), fp, 'application/octet-stream')
        },
                             boundary=boundary_value)

        query_string_parameters = {
            'session_token': self.sessionToken,
            'uploadkey': folderKey,
            'response_format': self.responseFormat
        }

        headers = {
            'X-Filename': os.path.basename(filePath),
            'X-Filesize': os.path.getsize(filePath),
            'User-Agent':
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',
            'Content-Type':
            'multipart/form-data; boundary=%s' % boundary_value,
            'Content-Length': len(m)
        }

        url = self.FILE_UPLOAD + '?' + urllib.urlencode(
            query_string_parameters)
        r = requests.post(url, data=m, headers=headers)

        js = json.loads(r.text)['response']

        if (js['result'] == "Error"):
            return js['message']
        return js['doupload']['key']
コード例 #22
0
    def buildPayload(self, message):

        print('{} [post] building formdata payload...'.format(time()))

        formdata = {}
        formdata['topic'] = self._id
        formdata['subject'] = 'RE:' + \
            self.title.encode('unicode-escape').decode('latin-1')
        formdata['icon'] = 'xx'
        formdata['message'] = message.encode('unicode-escape').decode(
            'latin-1')
        formdata['notify'] = '0'
        formdata['do_watch'] = '0'
        formdata['goback'] = '1'
        formdata['post'] = 'Post'
        formdata['num_replies'] = str(self.n_replies)
        formdata['seqnum'] = str(self.seqnum)
        formdata['sc'] = str(self.sc)

        payload = MultipartEncoder(fields=formdata)
        print('{} [post] formdata payload encoded.'.format(time()))
        return payload
コード例 #23
0
def add_teacher_name(s):
    #添加老师页面
    url = host + '/xadmin/hello/teacher/add/'

    #获取页面隐藏参数
    r = requests.get(url)
    # print(r.text)

    #使用正则表达式获取token
    csrftoken = re.findall("name='csrfmiddlewaretoken' value='(.+?)'", r.text)
    print(csrftoken)

    body = MultipartEncoder(fields=[("csrfmiddlewaretoken", csrftoken[0]),
                                    ("csrfmiddlewaretoken", csrftoken[0]),
                                    ("teacher_name", "yoyo211111114"),
                                    ("tel", "131321313"),
                                    ("mail", "*****@*****.**"), ("sex", "M"),
                                    ("_save", "")], )

    r2 = s.post(url, data=body, headers={'Content-Type': body.content_type})
    # print(r2.text)
    return r2.text
コード例 #24
0
ファイル: webapp_lib.py プロジェクト: balajeen/avi-monitoring
def _upload_multipart_file_form(file_path, file_uri):
    if not os.path.exists(file_path):
        error('File not found: ' + file_path)

    #port = get_controller_port()i
    session = get_session()
    #port = session.port
    port = 443
    path = 'https://%s:%s/api/fileservice/uploads' % (session.controller_ip,
                                                      port)
    file_name = os.path.basename(file_path)

    with open(file_path, "rb") as f:
        f_data = {
            "file": (file_name, f, "application/octet-stream"),
            "uri": file_uri
        }
        m = MultipartEncoder(f_data)
        r = session.post(path, data=m)

        if r.status_code > 300:
            error('Fail to upload: ' + r.content)
コード例 #25
0
 def inference_remote_image(self,
                            id,
                            image_hash,
                            ann=None,
                            meta=None,
                            mode=None):
     data = {
         "request_type": "inference",
         "meta": meta or ProjectMeta().to_json(),
         "annotation": ann or None,
         "mode": mode or {},
         "image_hash": image_hash
     }
     fake_img_data = sly_image.write_bytes(np.zeros([5, 5, 3]), '.jpg')
     encoder = MultipartEncoder({
         'id': str(id).encode('utf-8'),
         'data': json.dumps(data),
         'image': ("img", fake_img_data, "")
     })
     response = self._api.post('models.infer',
                               MultipartEncoderMonitor(encoder))
     return response.json()
コード例 #26
0
 def upload_photo(self,
                  photo,
                  caption=None,
                  upload_id=None,
                  is_sidecar=None):
     if upload_id is None:
         upload_id = str(int(time.time() * 1000))
     data = {
         'upload_id':
         upload_id,
         '_uuid':
         self.uuid,
         '_csrftoken':
         self.token,
         'image_compression':
         '{"lib_name":"jt","lib_version":"1.3.0","quality":"87"}',
         'photo': ('pending_media_%s.jpg' % upload_id, open(photo, 'rb'),
                   'application/octet-stream', {
                       'Content-Transfer-Encoding': 'binary'
                   })
     }
     if is_sidecar:
         data['is_sidecar'] = '1'
     m = MultipartEncoder(data, boundary=self.uuid)
     self.s.headers.update({
         'X-IG-Capabilities': '3Q4=',
         'X-IG-Connection-Type': 'WIFI',
         'Cookie2': '$Version=1',
         'Accept-Language': 'en-US',
         'Accept-Encoding': 'gzip, deflate',
         'Content-type': m.content_type,
         'Connection': 'close',
         'User-Agent': USER_AGENT
     })
     response = self.s.post(API_URL + "upload/photo/", data=m.to_string())
     if response.status_code == 200:
         if self.configure(upload_id, photo, caption):
             self.expose()
     return False
コード例 #27
0
def uploadPhoto(self, photo, caption=None, upload_id=None):
    if upload_id is None:
        upload_id = str(int(time.time() * 1000))
    if not compatibleAspectRatio(getImageSize(photo)):
        self.logger.info('Not compatible photo aspect ratio')
        return False
    with open(photo, 'rb') as photo_bytes:
        data = {
            'upload_id':
            upload_id,
            '_uuid':
            self.uuid,
            '_csrftoken':
            self.token,
            'image_compression':
            '{"lib_name":"jt","lib_version":"1.3.0","quality":"87"}',
            'photo': ('pending_media_%s.jpg' % upload_id, photo_bytes,
                      'application/octet-stream', {
                          'Content-Transfer-Encoding': 'binary'
                      })
        }
        m = MultipartEncoder(data, boundary=self.uuid)
        self.session.headers.update({
            'X-IG-Capabilities': '3Q4=',
            'X-IG-Connection-Type': 'WIFI',
            'Cookie2': '$Version=1',
            'Accept-Language': 'en-US',
            'Accept-Encoding': 'gzip, deflate',
            'Content-type': m.content_type,
            'Connection': 'close',
            'User-Agent': config.USER_AGENT
        })
        response = self.session.post(config.API_URL + "upload/photo/",
                                     data=m.to_string())
        if response.status_code == 200:
            if self.configurePhoto(upload_id, photo, caption):
                self.expose()
                return True
        return False
コード例 #28
0
 def test_send_mail(self, mock_send_mail_handler):
     # PREPARE DATA
     template = "accounts_change_password"
     url_reverse = reverse('api:mail-list')
     params = {
         "name": faker.name(),
         "public_url": faker.url(),
         "recipients": [faker.email()],
     }
     data = {
         "template": template,
         "params": json.dumps(params),
         "lang": "en",
     }
     m = MultipartEncoder(fields=data)
     # DO ACTION
     response = self.client.post(url_reverse,
                                 data=m.to_string(),
                                 content_type=m.content_type)
     # ASSERTS
     self.assertTrue(status.is_success(response.status_code))
     self.assertTrue(mock_send_mail_handler.called)
コード例 #29
0
    def upload_file(self, relation_key, schema, data, overwrite=None,
                    delimiter=None, binary=None, is_little_endian=None):
        """Upload a file in a streaming manner to Myria.

        Args:
            relation_key: relation to be created.
            schema: schema of the relation.
            data: the bytes to be uploaded.
            overwrite: optional boolean indicating that an existing relation
                should be overwritten. Myria default is False.
            delimiter: optional character which delimits a CSV file. Only valid
                if binary is False. Myria default is ','.
            binary: optional boolean indicating that the data is encoded as
                a packed binary. Myria default is False.
            is_little_endian: optional boolean indicating that the binary data
                is in little-Endian. Myria default is False.
        """

        from requests_toolbelt import MultipartEncoder

        fields = [('relationKey', relation_key), ('schema', schema),
                  ('overwrite', overwrite), ('delimiter', delimiter),
                  ('binary', binary), ('isLittleEndian', is_little_endian)]
        fields = [(name, (name, json.dumps(value), 'application/json'))
                  for (name, value) in fields]
        # data must be last
        if binary:
            data_type = 'application/octet-stream'
        else:
            data_type = 'text/plain'
        fields.append(('data', ('data', data, data_type)))

        m = MultipartEncoder(fields=fields)
        r = self._session.post(self._url_start + '/dataset', data=m,
                               headers={'Content-Type': m.content_type})
        if r.status_code not in (200, 201):
            raise MyriaError('Error %d: %s'
                             % (r.status_code, r.text))
        return r.json()
コード例 #30
0
ファイル: ImgUpload.py プロジェクト: Virace/Python
def upload_img(file):
    """
    上传图片至微博图传
    :param file:
    :return:
    """
    if os.path.isfile(file):
        # API : https://img.yyhyo.com/api.php
        url = 'https://img.yyhyo.com/upload.php?type=Sina'
        # 拼接提交数据
        multipart_encoder = MultipartEncoder(
            fields={
                # 测试中文文件名会有问题,所以只加上扩展名
                'fileupload': ('xx.' + file.split('.')[-1], open(file, 'rb'))
            })
        res = requests.post(
            url,
            data=multipart_encoder,
            headers={'Content-Type': multipart_encoder.content_type})
        source = res.json()
        if source['code'] == '0':
            return source['msg']