Giter VIP home page Giter VIP logo

zoomus's People

Contributors

arska avatar chirag200666 avatar dchess avatar dependabot-preview[bot] avatar dependabot[bot] avatar dolohow avatar ducpho avatar gfrn avatar gregorydlogan avatar jrfernandes avatar jwilhelm-godaddy avatar mfldavidson avatar navega avatar navinkarkera avatar predatell avatar prschmid avatar rakesh-pankhania avatar rakeshgunduka avatar renefs avatar rixiaterurun avatar seantibor avatar tarkatronic avatar tomasgarzon avatar woodsbw avatar wsmirnow avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zoomus's Issues

No Content-Type setting in ApiClient.put_request

Hello, thank you for the nice utility for using Zoom API with Python!

headers = {"Authorization": "Bearer {}".format(self.config.get("token"))}

put_request method sends json data in the request body same as post_request and patch_request, but the header does not have Content-Type field.
It causes Content-Type error, so Zoom API returns the following:

{"code":300,"message":"Unsupported Content Type"}

client.user.create() not working

here is my code:
def create_zoom_user(client, user={}):
user['action'] = "create"
user['user_info']['email'] = "[email protected]"
user['user_info']['type'] = 1
user['user_info']['first_name'] = "chirag"
user['user_info']['last_name'] = "mittal"
user['user_info']['password'] = "password@123"
print(f"user={user}")
user_json = json.dumps(user)
print(f"user josn={user_json}")

response = client.user.create(**user)

output : {"code":300,"message":"Request Body should be a valid JSON object."}

PS: why is the user_dict send to the api in params rather than data , is it desirable ?
refrence point:
class UserComponentV2(base.BaseComponent):
def create(self, **kwargs):
return self.post_request("/users", params=kwargs) # kwargs = by send data

Proposal: Accept str for start_time in meeting.py

Currently various functions in meeting.py try to convert start_time to a string as such:

        if kwargs.get("start_time"):
            kwargs["start_time"] = util.date_to_str(kwargs["start_time"])

I propose that it is only converted if it is not yet a string. This is because I would like to pass start_time as a string (e.g. “2020-03-22T06:58:04”) and not have to deal with using date/datetime objects (and resulting issues that may arise).

Happy to do the work if you agree.

Thoughts?

Thanks

generate_jwt() needs str(token, "uft-8")

Not sure why this is. I'm on python 3.7 but for token to be accepted I need to cast to string in utils.py

def generate_jwt(key, secret):
    header = {"alg": "HS256", "typ": "JWT"}

    payload = {"iss": key, "exp": int(time.time() + 3600)}

    token = jwt.encode(payload, secret, algorithm="HS256", headers=header)
    return str(token, "utf-8")

I found it here so it seems like it is not just me https://devforum.zoom.us/t/jwt-documentation/3881/4

The example is not correct

from zoomus import ZoomClient

client = ZoomClient('API_KEY', 'API_SECRET')

for user in client.user.list():
    user_id = user['id']
    print client.meeting.list('host_id': user_id)
  1. client.user.list() is not a list, it's Response from requests.
  2. 'host_id': user_id is not a correct python parameter format.

So it should be:

from zoomus import ZoomClient
client = ZoomClient('API_KEY', 'API_SECRET')
for user in json.loads(client.user.list().content)['users']:
    user_id = user['id']
    print client.meeting.list(host_id=user_id)

Proposal: Format code using `black`

There is not currently any setup for any kind of linters or formatters, leading to a bit of varying code styles throughout the codebase. I would like to propose that this change to an adoption of the black autoformatter. This is becoming effectively the de-facto path in the Python ecosystem, and will even be used against certain parts of the stdlib starting soon. In fact, it was even adopted under the official Python org on GitHub: https://github.com/python/black

For more information on the reasons and implications, I would encourage you to read the (accepted) Django Enhancement Proposal for adopting black, despite a currently very well fleshed out style guide: https://github.com/django/deps/blob/master/accepted/0008-black.rst

only getting "200: OK" but not list

Hi

I'm using:

from zoomus import ZoomClient
client = ZoomClient('API_KEY', 'API_SECRET')
for user in json.loads(client.user.list().content)['users']:
    user_id = user['id']
    print client.meeting.list(host_id=user_id

but I'm only getting "<Response [200]>" back, not the actual list.

I'm sure I'm missing something fundamental here. any help is appreciated.

Proposal: Adopt the six library, or drop Python 2 support

I've seen that there are a number of utilities in this library for dealing with the disparities between Python 2 and 3. This is a point where the six library can be immensely helpful, in replacing this functionality as well as providing much more.

Alternatively, given that Python 2.7 will no longer be supported after the end of 2019, it might be a good time to simply start ripping out that support, and release a new major revision which is Python 3 only.

Unable to set timezone for meeting start times

I think the letter Z needs to be removed since it causes Zoom to default to GMT time and ignore the timezone argument as mention in the documentation for the start_time argument here - https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingcreate

def date_to_str(d):
    """Convert date and datetime objects to a string
    Note, this does not do any timezone conversion.
    :param d: The :class:`datetime.date` or :class:`datetime.datetime` to
              convert to a string
    :returns: The string representation of the date
    """
    return d.strftime("%Y-%m-%dT%H:%M:%SZ")

Proposal: Change tests to use the responses library

In working on #11, I'm becoming increasingly concerned that the current testing pattern is not going to be sufficient. It involves mocking helper methods and checking what they are called with. Then I saw this comment, on components.base.BaseComponent, in the post_request method.

    Since the Zoom.us API only uses POST requests and each post request
   must include all of the config data, this method ensures that all
   of that data is there

This is problematic, for 2 reasons. First, v2 of the API uses all available HTTP methods: GET, POST, PATCH, PUT, and DELETE. So that means that none of those methods are getting the same treatment. Second, the treatment this method is performing may not be applicable to v2, and could even be causing problems.

Because of this, I would propose that the testing gets switched to use the responses library. In this way, the full HTTP request can be verified, from what URL is being called, to what parameters are used, to what headers and cookie are sent.

This does present a bit of a quandary, however. While I have v2 theoretically near completion in #11, including full test coverage... I fear that it may not actually work properly. Or, if it does, it may be by pure luck. On the other hand, I think that this change to the testing approach belongs in a full separate PR, as it will be quite a large change, and my current work is already reaching massive proportions.

So I think what I would like to propose is that #11 gets finalized and merged, then work can begin immediately on this change, prior to a new release going out.

Thoughts?

User creation does not work. Error 300: Request Body should be a valid JSON object.

I use this code, and I get error

from zoomus import ZoomClient
import json
import PASSWORDS
import requests
import time
import jwt

url = "https://api.zoom.us/v2/users"
client = ZoomClient(PASSWORDS.logins['zoom_api_key'], PASSWORDS.logins['zoom_api_secret'])

user = {
    "action": "string",
    "user_info": {
        "email": "string",
        "type": "integer",
        "first_name": "string",
        "last_name": "string",
        "password": "string"
    }
}

user['action'] = "autoCreate"
user['user_info']['email'] = "[email protected]"
user['user_info']['type'] = 1
user['user_info']['first_name'] = "Дмитрий"
user['user_info']['last_name'] = "Салтыков Щедрин"
user['user_info']['password'] = "ANps11CDkz"
print(f"user={user}")
user_json = json.dumps(user)
print(f"user josn={user_json}")

response = client.user.create(**user)

print(response.text)
print(f"respons={response}")
print(f"respons.headers={response.headers}")
print(f"respons.request.headers={response.request.headers}")
print(f"respons.request.path_url={response.request.path_url}")
print(f"respons.text={response.text}")
print(f"respons.url={response.url}")
print(f"response.status_code={response.status_code}")

I took the finished code from Code Generation from https://marketplace.zoom.us/docs/api-reference/zoom-api/users/usercreate and changed it a little. And it work.

from zoomus import ZoomClient
import json
import PASSWORDS
import requests
import time
import jwt


def generate_jwt(key, secret):
    header = {"alg": "HS256", "typ": "JWT"}

    payload = {"iss": key, "exp": int(time.time() + 3600)}

    token = jwt.encode(payload, secret, algorithm="HS256", headers=header)
    return token.decode("utf-8")


url = "https://api.zoom.us/v2/users"
client = ZoomClient(PASSWORDS.logins['zoom_api_key'], PASSWORDS.logins['zoom_api_secret'])

user = {
    "action": "string",
    "user_info": {
        "email": "string",
        "type": "integer",
        "first_name": "string",
        "last_name": "string",
        "password": "string"
    }
}

user['action'] = "autoCreate"
user['user_info']['email'] = "[email protected]"
user['user_info']['type'] = 1
user['user_info']['first_name'] = "Дмитрий"
user['user_info']['last_name'] = "Салтыков Щедрин"
user['user_info']['password'] = "ANps11CDkz"
print(f"user={user}")
user_json = json.dumps(user)
print(f"user josn={user_json}")

myjwt = generate_jwt(PASSWORDS.logins['zoom_api_key'], PASSWORDS.logins['zoom_api_secret'])
bearer = f"Bearer {myjwt}"
payload = user_json
headers = {
    'authorization': bearer,
    'content-type': "application/json"
}

response = requests.request("POST", url, data=payload, headers=headers)

print(response.text)
print(f"respons={response}")
print(f"respons.headers={response.headers}")
print(f"respons.request.headers={response.request.headers}")
print(f"respons.request.path_url={response.request.path_url}")
print(f"respons.text={response.text}")
print(f"respons.url={response.url}")
print(f"response.status_code={response.status_code}") 

I think that there is a difference in the format of the data sent, but I just can not understand what this difference is.

client.meeting.create() fails using v2

The call returns a response with a 400 status code whenever using the version 2 of the API.

>>> zoom_client = ZoomClient('MY_API_KEY', 'MY_API_SECRET', version=2)
>>> response = zoom_client.meeting.create(
...                 user_id=host_id,
...                 start_time=pendulum.now(),
...                 type=2,
...                 duration=60
...             )
>>> response
<Response [400]>
>>> response.content
'{"code":300,"message":"Request Body should be a valid JSON object."}'
>>> response.status_code
400

Using V1

>>> version = 1
>>> zoom_client = ZoomClient(credentials.api_key, credentials.api_secret, version=version)
>>> response = zoom_client.meeting.create(
...                 host_id=host_id,
...                 start_time=pendulum.now(),
...                 type=2,
...                 duration=60
...             )
>>> response = zoom_client.meeting.create(
...                 host_id=host_id,
...                 start_time=pendulum.now(),
...                 type=2,
...                 duration=60,
...                 topic='string'
...             )
>>> response
<Response [200]>
>>> response.status_code
200
>>> response.content
'{"uuid":"xxxxxxxxxxxx==","id":xxxxxxxx,"host_id":"xxxxxxxxx-xxxxx", ...
,"topic":"string","created_at":"2019-12-30T21:30:11Z"}'

"Invalid access token" issue

Why would this bellow script, with the exact same key/secret, systematically fail on one server, and work just fine form another!!!
Both runs use same docker container, built from same Dockerfile... so same OS, libs, ….etc.

from zoomus import ZoomClient
import json
client = ZoomClient('###########','######################')

user_list_response = client.user.list()
user_list = json.loads(user_list_response.content)
print(user_list)
print("Done!")

Where it fails it prints:

[root@69981eb9a60f zoom]# /bin/python3 /workspaces/zoom/test-zoom.py
{'code': 124, 'message': 'Invalid access token.'}
Done!
[root@69981eb9a60f zoom]# 

v2 authentication

Not sure if this is still being actively developed, but are there any plans to add support for JWT and V2?
It requires python-jose and adding the token to the authorziation header.

from jose import jwt
key = 'APIKEY'
secret = 'APISECRET'

token = jwt.encode({'key': 'value'}, 'secret', algorithm='HS256')

Get List of Users in Meeting

I have got an api key and secret. Now I want to get a list of the users in a meeting. I have the meeting id and password, and the URL. Is this possible?

Proposal: Eliminate nosetests

According to the Nose docs:

Nose has been in maintenance mode for the past several years and will likely cease without a new person/team to take over maintainership. New projects should consider using Nose2, py.test, or just plain unittest/unittest2.

Since it is only being used as a test runner, and all of the tests are written using the unittest framework already, I would propose switching to using unittest as the test runner as well. This would change the test run command from:

nosetests

to:

python -m unittest

Or, to keep coverage reporting:

coverage run -m unittest

Email address not being updated, no errors

I am trying to update an email address for one of our users, I can get a list of all users.
Updating the specified user does not give any errors, gives a 204 response but the email address is not changed in zoom.

`
client = ZoomClient(KEY, SECRET)
users = json.loads(client.user.list().content)['users']

for user in users:
    if user['id'] == 'SOxcvf***********':
        user_data = {
            "id": user['id'],
            "email": '[email protected]'
        }
        response = client.user.update(**user_data)
        if response.status_code == 204:
            print("Email address for %s has been updated" % user['email'])
        else:
            print("ERROR: cannot update email address. More info: {}".format(response.text))

`

Missing get_by_email in UserComponentV2

Wondering if there is a particular reason for this?

Otherwise this works. Sorry but I don't have time to create a pull request

def get_by_email(self, **kwargs):
    util.require_keys(kwargs, ["email"])
    return self.get_request("/users/email", params=kwargs)

List of recordings requires a 'from' parameter incompatible with Python

Per https://marketplace.zoom.us/docs/api-reference/zoom-api/cloud-recording/recordingslist, if you don't include the from parameter in the REST call you get a default of yesterday. I wanted more like a week, so I tried this:

recordings_response = self.zoom_client.recording.list(user_id=user_id, mc="false", page_size=30, trash_type="meeting_recordings", from="2020-01-01")

which obviously doesn't work. Attempting to use from_ instead also did not work. This does, at the cost of legibility

recordings_response = self.zoom_client.recording.list(user_id=user_id, mc="false", page_size=30, trash_type="meeting_recordings", **{"from": "2020-01-01"})

Resolution: Bake in from_ support, or some other kind of parameter renaming.

Example for user.update() method

Hi!

First of all, thanks for your great project!

I'd like to update the user type (basic, licensed) based on the scheduled meetings. Do you have any working example for the client.user.update(...) method?

Thanks!

util->patch_request V2 need modification

The patch_request under util need a patch, just add the following before the return statement, otherwise a call to user.update will failed as data should be encoded as application/json

headers['content-type'] = 'application/json'
return requests.patch(.......

Doesn't support the "type" parameter in meetings.list

When I run this:
topics = json.loads(client.meeting.list(user_id="USERID").content)

It shows all of the user's scheduled meetiings (Default should be live according to the api docs). I can add any random arguments after user_id and it does nothing, including the "Type" request parameter.

When I run this:
topics = json.loads(client.meeting.list(user_id="USERID",type="live").content)
It does not change the output at all. I can also add arguments that don't even exist and it ignores them rather than giving an error.

https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetings

Generate_jwt is attempting to decode the token as utf-8

Using zoomus 1.1.3 installed via pip:

Python 3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:37:30) [MSC v.1927 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import json
>>> from zoomus import ZoomClient
>>> client = ZoomClient('xxx', 'yyy')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python38-32\lib\site-packages\zoomus\client.py", line 62, in __init__
    "token": util.generate_jwt(api_key, api_secret),
  File "C:\Users\Ben\AppData\Local\Programs\Python\Python38-32\lib\site-packages\zoomus\util.py", line 262, in generate_jwt
    return token.decode("utf-8")
AttributeError: 'str' object has no attribute 'decode'

As per the above, generate_jwt calls jwt.encode to generate the token which returns an str. However, generate_jwt then attempts to decode token as utf-8 when it returns it which is no longer required / supported which in turn causes the above error.

Modifying generate_jwt to return token without attempting to decode it works for me. I'm reluctant to submit a PR though as I only discovered this project a few hours ago so am not really in a position to say conclusively if this is the right solution or not.

Some documentation for apis.

Hi , can we some documentations/ examples for the various methods we can use.
Forex:
client.user.create(...)
client.webinar.create(...)
etc....

Example not working

Example Usage
Create the client v2 (default)
As Zoom's default is now the V2 API, the client will default to the V2 version of the API.

from zoomus import ZoomClient

client = ZoomClient('API_KEY', 'API_SECRET')

for user in json.loads(client.user.list())['users']:
    user_id = user['id']
    print client.meeting.list('host_id': user_id)

Does not work, returns invalid syntax.

This however will return 1 page size = 30

save = []
users = client.user.list()
for user in users:
    save.append(user.decode())

for items in save:
    print(items)

As i can see most methods does not work with example supplied.
Maybe rewrite syntax of example for easy understanding how to use with the methods bellow ?

Best regard Alex

Can't create Zoom meeting (response code 200)

Hello,

I'm getting response code 200, which means the request was successful but a meeting wasn't created. Here's the call I'm making in my app:

# create Zoom meeting
client = ZoomClient('xxx', 'xxxx')

zoom_format = Event.start_date.strftime("%Y-%m-%dT%H:%M:%SZ")
zoom_meeting = client.meeting.create(topic="Meeting", type=2, start_time=str(zoom_format), duration=30, userId=str(updatedEvent.user.email), agenda="", 
host_id=str(updatedEvent.user.email))
print(zoom_meeting)

My response back was this:

{
"endpoint": "https://api.zoom.us/v2/users/xxx/meetings",
"response_headers": [
"Set-Cookie: zm_aid=""; Domain=.zoom.us; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; Secure; HttpOnly"
],
"date_time": "2020-07-28 06:52:33",
"method": "GET",
"request_body": "N/A",
"response": {
"page_size": 30,
"total_records": 0,
"next_page_token": "",
"meetings": [
]
},
"request_headers": [
"accept-encoding: gzip, deflate",
"accept: */*",
"authorization: ******",
"connection: close",
"user-agent: python-requests/2.24.0"
],
"request_params": [
"user_id: xxx"
],
"http_status": "200"
}

Any help would be greatly appreciated.

Thanks!

Client.meeting.list takes one arguement, two were given

just started using zoomus with python3, passing host_id to the client.meeting.list() method like this

params = {'host_id' : "myhostid'}
client.meeting.list(params)

but it raises exception like this

TypeError: list() takes 1 positional argument but 2 were given.

i am trying to run the code given in readme.MD .. but it aint working. tried it with python2 as well. same error

get b char on every line

`client = ZoomClient(os.environ['zoom-api-key'],os.environ['zoom-api-password'], version=2)

users = client.user.list()
for user in users:
print(user)`

When pulling user list i get the character b on every line.

b'{"page_count":37,"page_number":1,"page_size":30,"total_records":1107,"users":[{"id":"1tlFftmeSuKg","first_name":"Malin' b'","last_name":"Manta","email":"malin.se","type":3,"pmi":84658,"timezone":"","verified":0,"dept":"","creat' b'ed_at":"2018-04-25T11:08:59Z","last_login_time":"2019-09-02T12:51:18Z","last_client_version":"4.4.55383.0716(android)","status":' b'"active"},{"id":"YExi-6Vr3zlxOzw","first_name":"Aleksei","last_name":"Landhev","email":"[email protected]","type"'

what is the reason for the error?

what is the reason for the error?

This code

`from zoomus import ZoomClient
import json

client = ZoomClient('nlPuETI4SNCVK7r5Lkl8EQ', 'gluuFR42imJ96VFpkmy1Yve0DBGeHUwwBZDG')

for user in json.loads(client.user.list())['users']:
user_id = user['id']
print(client.users.list())`

this error

Traceback (most recent call last): File "C:/MyGit/GivinToolsPython/zoomtest.py", line 8, in <module> for user in json.loads(client.user.list())['users']: File "C:\Program Files\Python37\lib\json\__init__.py", line 341, in loads raise TypeError(f'the JSON object must be str, bytes or bytearray, ' TypeError: the JSON object must be str, bytes or bytearray, not Response

.response vs .text

The example in the README didn't work for me, and I finally tracked it to .content vs. .text. .content is returned as a type 'bytes' vs type 'string', and the json.loads statement won't take the 'bytes' as input. You may also want to mention that kwargs, such as page_size can be placed into the calls for items. Worked like a champ, but I had to look at the source to see I could do it. Thanx in general, great little utility module.

Zomus instal from pip missing folder

I just installed the client using pip and it doesn't runs, because the component folder is missing in the install.

In [2]: from zoomus import ZoomClient
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-2-a9bd3832bb69> in <module>()
----> 1 from zoomus import ZoomClient

/home/jtrad/play/mejorpromedio/local/lib/python2.7/site-packages/zoomus/__init__.py in <module>()
      7 __version__ = '0.1.1'
      8 
----> 9 from zoomus.client import ZoomClient

/home/jtrad/play/mejorpromedio/local/lib/python2.7/site-packages/zoomus/client.py in <module>()
      4 __email__ = "[email protected]"
      5 
----> 6 from zoomus import (
      7     components,
      8     util)

ImportError: cannot import name components

Past Meeting Attendees does not handle pagination

"/past_meetings/{}/participants".format(kwargs.get("meeting_id")),

From https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/pastmeetingparticipants:
This request can exceed a single page, and may need to handle the pagination.

{
  "type": "object",
  "description": "Pagination object.",
  "properties": {
    "page_count": {
      "type": "integer",
      "description": "The number of pages returned for the request made."
    },
    "page_size": {
      "type": "integer",
      "description": "The number of records returned within a single API call.",
      "default": 30,
      "maximum": 300
    },
    "total_records": {
      "type": "integer",
      "description": "The number of all records available across pages."
    },
    "next_page_token": {
      "description": "The next page token is used to paginate through large result sets. A next page token will be returned whenever the set of available results exceeds the current page size. The expiration period for this token is 15 minutes.",
      "type": "string"
    },
    "participants": {
    ....
    }
  }
}

Support for v2 Master Account API

I looked around at the source code and didn't see support for the Master Account API structure.

If someone has access to that set of API's it would be cool to get implemented. If I am lucky enough, I'll get access and get around to it.

Example: https://marketplace.zoom.us/docs/api-reference/master-account-apis/meeting-apis

Zoom API Version 2 provides a set of Master Account APIs. To be able to use these APIs, please contact the team. These APIs allow a Master Account to manage Sub Accounts utilizing the Master Account’s API Key/Secret. Previously you would have to know the Sub Account’s API Key/Secret to manage it’s users and meetings. The endpoints mirror the standard Zoom API, pre-pended with /accounts/{accountID}

Detect active speaker

Hi,
Is there a way to detect the active speaker during a zoom meeting using API or some other way?

Client is missing property for past meeting

"past_meeting": components.past_meeting.PastMeetingComponentV2,

The ZoomClient class does not have a property for calling past_meeting. A fix looks like it would require adding the following to client.py:

@property
def past_meeting(self):
    """Get the past_meeting component"""
    return self.components.get("past_meeting")

Happy to open a PR with a fix if that would be more helpful.

No Documentation for Usage

Dear @prschmid ,

Please add some documentation for all functions usage and parameters.
Currently in Readme it says
client.user.create(...)
I am sure, one can go through the source code and understand the parameters.
But for a user, it must be simple to use in my sense without going through the source code.
Frankly speaking, those three dots doesn't help at all.

Please add some documentation in Readme itself.

Not understanding how to use these methods ?

Not able to understand how to use these methods for eg. client.user.get_by_email()?
Basically, I am trying to write a cronjob/schedule job for my Django web app which will transfer zoom recording to our s3 bucket in every two hours, but I am unable to understand these methods.

My cronjob code is like below:-

from django_cron import CronJobBase, Schedule
from zoomus import ZoomClient

class zoomrecordingtransfer(CronJobBase):
RUN_EVERY_MINS = 120 # every 2 hours

schedule = Schedule(run_every_mins=RUN_EVERY_MINS)
code = 'zoomtransferjob.zoom_transfer_cron_job'    # a unique code

def do(self):
    client = ZoomClient('sxxxxxxxxxTbYug', 'axxxxxxxxxxxxxxxxxxxxtgsT1')
    temp = client.user.get_by_email('[email protected]')
    print(temp)

Can anyone help me out regarding how should I use these methods as I am not getting any output with "client.user.get_by_email('[email protected]')" in print statement?

page_size and page_number

Hi,

Is there a way to parse "page_size" or "page_number" to client.user.list() ?
In my case by default ZOOM sets this to first page and 30 users and I need to list them all to check if the account exists.
I would appreciate your help.

Thanks!

Taking contributions?

@prschmid Are you accepting pull requests on this repo? I submitted #125 and #131 in August and I see no changes in the codebase since May. Anything I can do to support reviewing PRs? Looks like there are currently 25 open PRs.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.