Giter VIP home page Giter VIP logo

webapi's Introduction

WebAPI

CLOS-based wrapper builder for Web APIs.

Usage

(ql:quickload '(:webapi :jonathan))

;; Define GitHub API request class.
(defclass github-request () ()
  (:default-initargs :base-uri "https://api.github.com"))
  
(defmethod webapi:parse ((request github-request) response)
  (jojo:parse (webapi:response-body response) :as :alist))

;; Request class for /users/:name/repos.
(defclass user-repositories (github-request)
  ((user :initarg :user))
  (:metaclass webapi:request-class)
  (:http :get))
  
(defmethod webapi:request-path ((request user-repositories))
  (format nil "/users/~A/repos" (slot-value request 'user)))

;; Request class for /search/repositories.
(defclass search-repositories (github-request)
  ((q :initarg :q))
  (:metaclass webapi:request-class)
  (:http :get "/search/repositories"))
  
(defmethod webapi:query-parameters ((request search-repositories))
  `(("q" . ,(slot-value request 'q))))
  
;;
;; Send a request

;; Get repositories of "fukamachi".
(webapi:send (make-instance 'user-repositories :user "fukamachi"))

;; Search repositories with related to "Common Lisp".
(webapi:send (make-instance 'search-repositories :q "Common Lisp"))

Author

Copyright

Copyright (c) 2017 Eitaro Fukamachi ([email protected])

License

Licensed under the BSD 2-Clause License.

webapi's People

Contributors

fukamachi avatar

Watchers

James Cloos avatar  avatar

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.