Ruby-библиотека для работы с REST api сайта
Есть сайт который работает через свое REST api.
Нужно сделать Ruby библиотеку для удобной работы с REST api этого сайта. Интерфейс библиотеки спроектирован, нужно только реализовать.
Сайт — админка для администрирования антиспама/пользователей антиспама. Есть подробная документация к апи на английском языке, также будет предоставлен доступ к тестовому серверу.
Примерная функциональность которая будет в библиотеке — crud для доменов и их алиасов\мейлсерверов\емейл аккаунтов и их алиасов\ресселеров\контактов\добавление и удаление админов\апдейт настроек политик спама\апдейт нотификаций\добавление удаление черного и белого списка получателей\поиск и фильтрация.
К библиотеки должны быть написаны юнит тесты.
Просьба делать ставки, только если есть достаточно свободного времени, чтобы начать делать библиотеку.
интерфейс библиотеки будет выглядеть так, пример для одного из рест ресурсов. ( код на питоне, аналогично должно будет выглядеть на Ruby с учетом языковых особенностей.)
import apilib
apilib.configure(username="blabla",apikey="blabla")
Reseller resource and common actions/interface.
reseller_list = apilib.Reseller.list() # list
reseller_list = apilib.Reseller.list().limit(20) # list
reseller_list = apilib.Reseller.list().offset(20) # list
reseller = apilib.Reseller.get(id=12) # 1 instance
reseller.name = "newname"
reseller = apilib.Reseller.get(name="test") # 1 instance
reseller.name # test
reseller.delete()
reseller_list = apilib.Reseller.search("searchstr") # list
reseller_list = apilib.Reseller.filter(name__startswith="begin") # list
reseller_list = apilib.Reseller.filter(name__exact="begin") # list
reseller_list = apilib.Reseller.filter(name="begin") # list
# all list field allow ordering
reseller_list = apilib.Reseller.filter(name="begin").order_by("-name") # list
reseller_list = apilib.Reseller.filter(name="begin").order_by("name") # list
reseller_list = apilib.Reseller.filter(name="begin").order_by("created_at") # list
new_reseller = apilib.Reseller.create(name="newresl")
apilib.Reseller.bulk_create([{'name':"r1"},{"name":"r2"}]) # mass create
apilib.Reseller.delete([reseller1,reseller2]) # mass delete of resellers by instance of list of pk
reseller.customers # list of customers - additional api call , cached
reseller.admins # list of admins - additional api call , cached
reseller.contacts # list of contacts - additional api call , cached
reseller.branding_info # branding info instance for this reseller, api call, cached
reseller.create_admin(email, send_welcome)
reseller.delete_admin(email)
reseller.create_contact(params)
reseller.create_customer(params)