از پارسکدرز بیشترین بهره را ببرید و رویای کاری خود را زندگی کنید.
هشت ماه پیش منتشر شده
تعداد بازدید: 132
کد پروژه: 433125
شرح پروژه
با سلام، لطفاً فقط کسانیکه تجربه نوشتن API با PHP را دارند در این پروژه شرکت کنند.
نرم افزاری قدیمی دارم که میخواهم ارتباط آن با Google Calendar را برقرار کنم. این پروژه API های یک سروری را برای خواندن و نوشتن رویدادها فراخوانی میکرده است (یک تقویم قدیمی مشابه گوگل کلندر) و من میخواهم این نرم افزار قدیمی، صرفاً با تغییر دادن آدرس سرور، بجای calendar قدیمی از google calendar استفاده کند. بنابراین میخواهم یک نرم افزار واسطی نوشته شود که از آن طرف یک API Server برای نرم افزار قدیمی باشد، و از طرفی با API server گوگل کلندر در ارتباط باشد (در حقیقت برای نرم افزار قدیمی من نقش API Server را بازی کند و برای Google calendar نقش API Client را بازی کند)
متدهایی که نرم افزار قدیمی فراخوانی می کند به شرح زیر است:
getEvents(startDate,endDate)
setEvent(eventTitle,eventDate,repeatMode,importance)
delEvent(eventID,allOccurances,eventDate)
شرح آرگومانها:
آرگومان startDate و endDate و eventDate به صورت رشته و با فرمت yyyy-mm-dd و به میلادی است.
آرگومان eventTitle رشته یونیکد (فارسی) است که base64encode شده است.
آرگومان importance می تواند عدد 0 یعنی اولویت پایین، 1 اولویت متوسط و 2 اولویت بالا باشد. اگر در گوگل کلندر اولویت تعریف نشده است می توانید مثلا رنگ رویداد را به عنوان اولویت تعریف کنید.
آرگومان repeatMode به صورت رشته ای است و حالتهای ممکن آن به شرح زیر است:
m یعنی ماهانه تکرار می شود (ماه میلادی، یعنی اگر تاریخ رویداد 3/8/2023 باشد، رویداد بعدی آن 3/9/2023 است)
2m یعنی هر دو ماه یکبار تکراری میشود (ماه میلادی، یعنی اگر تاریخ رویداد 3/8/2023 باشد، رویداد بعدی آن 3/10/2023 است)
y یعنی هر سال تکرار می شود (میلادی، یعنی تاریخ رویداد اگر 3/8/2023 باشد، تکراری بعدی 3/8/2024 خواهد بود)
w یعنی هفتگی تکراری می شود (اگر تاریخ رویداد روز شنبه باشد، رویداد موردنظر هر شنبه تکرار می شود)
نکته مهم: تکرار ها می بایست تکرار خود گوگل باشند، یعنی مثلا اگر رویدادی قرار است هر هفته تکرار شود، نمی بایست هر هفته رویداد مستقلی در گوگل کلندر insert شود، بلکه باید از تکرار خود گوگل کلندر استفاده شود.
شرح هر متد و فرمت خروجی:
در متد getEvents، رویدادهایی که بین تاریخ startDate و endDate وجود دارد را لیست میکند (شامل خوده تاریخ endDate نمیشود و شرط به این صورت است: بزرگتر مساوی startDate و کوچکتر از endDate). فرمت خروجی یک associative array هست که JSON شده است، به طور مثال اگر startDate تاریخ 01-01-2023 باشد و endDate تاریخ 01-02-2023 باشد، کلیه ی رویدادهایی که در این بازه زمانی هستند می بایست با فرمت زیر برگردانده شود.مثلا در این بازه زمانی فقط دو رویداد ثبت شده که یکی از آنها بدون تکرار است و دیگری هفتگی تکرار میشود:
event[0]['ID']=9847
event[0]['title']='eventTitle1'
event[0]['eventDate']='2023-01-05'
event[0]['repeatMode']=''
event[0]['importance']=1
event[1]['ID']=9848
event[1]['title']='eventTitle2'
event[1]['eventDate']='2023-01-07'
event[1]['repeatMode']='w'
event[1]['importance']=2
event[2]['ID']=9848
event[2]['title']='eventTitle2'
event[2]['eventDate']='2023-01-14'
event[2]['repeatMode']='w'
event[2]['importance']=2
event[3]['ID']=9848
event[3]['title']='eventTitle2'
event[3]['eventDate']='2023-01-21'
event[3]['repeatMode']='w'
event[3]['importance']=2
event[4]['ID']=9848
event[4]['title']='eventTitle2'
event[4]['eventDate']='2023-01-28'
event[4]['repeatMode']='w'
event[4]['importance']=2
دقت کنید با اینکه دو رویداد در گوگل کلندر تعریف شده (دومی فقط تکرار دارد) باز هم در خروجی می بایست تکرار ها هم لیست شود.
متد setEvent هم واضح است و نیازی به توضیح ندارد، خروجی آن فقط یک eventID است که به صورت JSON است.
متد delEvent هم برای حذف یک رویداد فراخوانی میشود که اگر allOccurance آن عدد یک باشد و رویداد تکرار شونده باشد، کل تکرارها هم می بایست حذف شود. اگر allOccurance آن عدد صفر باشد و رویداد تکرار شوند باشد، فقط رویداد مربوط به تاریخ eventDate می بایست حذف شود. پارامتر سوم در حالتیکه allOccurance عدد یک باشد optional است و اگر عدد صفر باشد optional نیست و باید مشخص شود که چه تاریخی از رویداد تکرار شونده ی موردنظر باید حدف شود. اگر رویداد تکرار شونده نباشد، درهرصورت (چه allOccurance عدد صفر یا یک باشد) رویداد موردنظر می بایست حدف شود و فقط درصورتی خطا داده خواهد شد که رویداد موردنظر یافت نشود، یا رویداد تکرار شونده موردنظر در تاریخ موردنظر وجود نداشته باشد.
کلیه خطاهای متدها هم می بایست با این فرمت برگردانده شود:
errNo=<errorNo>
errDesc='error description'
توضیحات خطاها به انگلیسی است. هر خطایی که گوگل کلندر بر می گرداند نیز می بایست به صورت خطا برگردد.
لطفاً در هنگام ثبت درخواست اجرای پروژه، نمونه کارهای API هم ارایه شود (در حد توضیحات یا عکس و... کافیست، اگر مستندات بیشتری نیاز بود درخواست خواهد شد)
با تشکر
مهارت ها و تخصص های مورد نیاز
بودجه
750,000 تومان تا 5,000,000 تومان
مهلت برای انجام
20روز
وضعیت مناقصه
بسته
درباره کارفرما
عضویت سه سال پیش
قادر به انجام این پروژه هستید؟
مهلت ارسال پیشنهاد قیمت برای این پروژه تمام شده است
به رایگان یک حساب کاربری بسازید
مهارتها و تخصصهای خود را ثبت کنید، رزومه و نمونهکارهای خود را نشان دهید و سوابق کاری خود را شرح دهید.
به شیوهای که دوست دارید کار کنید
برای پروژههای دلخواه در زمان دلخواه پیشنهاد قیمت خود را ثبت کنید و به فرصتهای شغلی منحصر به فرد دسترسی پیدا کنید.
با اطمینان دستمزد دریافت کنید
از زمان شروع کار تا انتهای کار به امنیت مالی شما کمک خواهیم کرد. وجه پروژه را از ابتدای کار به امانت در سایت نگه خواهیم داشت تا تضمین شودکه بعد از تحویل کار دستمزد شما پرداخت خواهد شد.
میخواهید شروع به کار کنید؟
یک حساب کاربری بسازید
بهترین مشاغل فریلنسری را پیدا کنید
رشد شغلی شما به راحتی ایجاد یک حساب کاربری رایگان و یافتن کار (پروژه) متناسب با مهارتهای شما
است.
پیدا کردن کار (پروژه)
تماشای دمو روش کار