Commit bfa95531 authored by Dominik Rosiek's avatar Dominik Rosiek

First api model

parent 6501912a
*.pyc
*.sqlite
*.sqlite3
JoinTheCityREST/app/*/migrations/*
.idea
...@@ -27,8 +27,8 @@ router.register(r'user_event', user_views.UserEventViewSet) ...@@ -27,8 +27,8 @@ router.register(r'user_event', user_views.UserEventViewSet)
router.register(r'user_api', user_views.UserAPIViewSet) router.register(r'user_api', user_views.UserAPIViewSet)
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'^api/api/(\d+)/(\w+)(|\/)$', api_views.APIViewSet.test),
url(r'^api/', include(router.urls)), url(r'^api/', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', url(r'^api-auth/', include('rest_framework.urls',
namespace='rest_framework')), namespace='rest_framework')),
......
# Create your views here. # Create your views here.
from django.http import HttpResponse, Http404
from rest_framework import viewsets, permissions from rest_framework import viewsets, permissions
import rest_framework
from rest_framework.response import Response
from app.API.models import API from app.API.models import API
from app.API.serializers import APISerializer from app.API.serializers import APISerializer
...@@ -11,3 +14,15 @@ class APIViewSet(viewsets.ModelViewSet): ...@@ -11,3 +14,15 @@ class APIViewSet(viewsets.ModelViewSet):
queryset = API.objects.all() queryset = API.objects.all()
serializer_class = APISerializer serializer_class = APISerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,) permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
@staticmethod
def test(request, id, function, slash):
try:
object = API.objects.get(pk=id)
except Exception as e:
raise Http404
name = "lib.api.{0}".format(object.name)
mod = __import__(name, fromlist=['API'])
api = mod.API(request)
return HttpResponse(api.execute(function), content_type="application/json")
\ No newline at end of file
__author__ = 'Dominik Rosiek'
import json
import requests
__author__ = 'Dominik Rosiek'
class BaseAPI(object):
resource = None
site = None
auth = ('niedzad', 'U6ANV3Xv')
methods = ()
verifySSL = False
def __init__(self, request):
self.request = request
def GET(self, parameters = {}):
parameters['resource'] = self.resource
r = requests.get(self.site, auth=self.auth, params=parameters, verify=self.verifySSL)
if r.status_code == 200:
return json.dumps(r.json())
return False
def execute(self, method):
if method in self.methods:
return getattr(self, method)()
return False
\ No newline at end of file
__author__ = 'Dominik Rosiek'
from app.API.serializers import APISerializer
from lib.api.API import BaseAPI
__author__ = 'Dominik Rosiek'
class API(BaseAPI):
resource = "b9349f75-c0e5-47a7-99a2-2f1ec4f32ad6"
site = "https://api.bihapi.pl/dane/krakow"
methods = ('default')
def default(self):
return self.GET(parameters=self.request.GET.dict())
from lib.APIClient import APIClient
__author__ = 'Dominik Rosiek'
api = APIClient();
url = r"https://api.bihapi.pl/dane/krakow"
api.get(url, params={"resource":"b9349f75-c0e5-47a7-99a2-2f1ec4f32ad6"})
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment