aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authort@thintz.com <t@thintz.com>2012-08-07 13:32:27 -0700
committert@thintz.com <t@thintz.com>2012-08-07 13:32:27 -0700
commit7e0bd0107dcb428ef23287b72a5e795ae7adb8e1 (patch)
tree1cc6a9f28c5f50001e47ee1f26ff049d4267200f
parent5fb32f290edb5837a45ed2c4afc4011397250a8b (diff)
downloadstriped-zebra-7e0bd0107dcb428ef23287b72a5e795ae7adb8e1.tar.gz
initial commit1
-rw-r--r--.gitignore4
-rw-r--r--striped-zebra.meta13
-rw-r--r--striped-zebra.release-info4
-rw-r--r--striped-zebra.scm70
-rw-r--r--striped-zebra.setup15
5 files changed, 106 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..606dbf3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+*.so
+*.o
+*~
+*.import.scm \ No newline at end of file
diff --git a/striped-zebra.meta b/striped-zebra.meta
new file mode 100644
index 0000000..1dbe400
--- /dev/null
+++ b/striped-zebra.meta
@@ -0,0 +1,13 @@
+; author: Thomas Hintz
+; email: t@thintz.com
+; license: bsd
+
+(
+(license "BSD")
+
+(category web)
+
+(needs http-client uri-common intarweb json)
+
+(author "Thomas Hintz")
+(synopsis "An API for using the Stripe payment system.")) \ No newline at end of file
diff --git a/striped-zebra.release-info b/striped-zebra.release-info
new file mode 100644
index 0000000..c76a250
--- /dev/null
+++ b/striped-zebra.release-info
@@ -0,0 +1,4 @@
+(repo git "git://github.com/ThomasHintz/{egg-name}.git") ; optional
+
+(uri targz "https://github.com/ThomasHintz/{egg-name}/tarball/{egg-release}")
+(release "1") \ No newline at end of file
diff --git a/striped-zebra.scm b/striped-zebra.scm
new file mode 100644
index 0000000..a9fbf09
--- /dev/null
+++ b/striped-zebra.scm
@@ -0,0 +1,70 @@
+; author: Thomas Hintz
+; email: t@thintz.com
+; license: bsd
+
+; Copyright (c) 2012, Thomas Hintz
+; All rights reserved.
+
+; Redistribution and use in source and binary forms, with or without
+; modification, are permitted provided that the following conditions are met:
+; * Redistributions of source code must retain the above copyright
+; notice, this list of conditions and the following disclaimer.
+; * Redistributions in binary form must reproduce the above copyright
+; notice, this list of conditions and the following disclaimer in the
+; documentation and/or other materials provided with the distribution.
+; * Neither the name of the <organization> nor the
+; names of its contributors may be used to endorse or promote products
+; derived from this software without specific prior written permission.
+
+; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+; DISCLAIMED. IN NO EVENT SHALL THOMAS HINTZ BE LIABLE FOR ANY
+; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+(module striped-zebra
+ (;; params
+ api-endpoint api-version default-username
+
+ ;; procs
+ send-stripe-request charge add-customer
+ )
+
+(import scheme chicken)
+(use http-client intarweb uri-common json)
+
+(define ++ string-append)
+
+(define api-endpoint (make-parameter "https://api.stripe.com/"))
+(define api-version (make-parameter "/v1/"))
+(define default-username (make-parameter ""))
+
+(define (send-stripe-request #!key (method 'GET) endpoint (body #f) (username (default-username)))
+ (with-input-from-request
+ (make-request method: method
+ uri: (uri-reference (++ (api-endpoint) (api-version) endpoint))
+ headers: (headers `((authorization . (#(basic ((username . ,username))))))))
+ body
+ json-read))
+
+(define (charge amount #!key (card-token #f) (customer #f) (username (default-username)) (description ""))
+ (send-stripe-request method: 'POST endpoint: "charges" username: username
+ body: `((amount . ,amount)
+ (description . ,description)
+ (currency . "usd")
+ (card . ,card-token)
+ (customer . ,customer))))
+
+(define (add-customer card-token #!key (description "") (email "") (username (default-username)) (plan ""))
+ (send-stripe-request method: 'POST endpoint: "customers" username: username
+ body: `((card . ,card-token)
+ (email . ,email)
+ (plan . ,plan)
+ (description . ,description))))
+
+)
diff --git a/striped-zebra.setup b/striped-zebra.setup
new file mode 100644
index 0000000..cdd5fc8
--- /dev/null
+++ b/striped-zebra.setup
@@ -0,0 +1,15 @@
+; author: Thomas Hintz
+; email: t@thintz.com
+; license: bsd
+
+(compile -s -O2 -d1 striped-zebra.scm -j striped-zebra)
+(compile -s striped-zebra.import.scm -O2 -d0)
+(compile -c -O2 -d1 striped-zebra.scm -unit sriped-zebra -j striped-zebra)
+
+(install-extension
+ 'striped-zebra
+ ; Files to install for your extension:
+ '("striped-zebra.o" "striped-zebra.so" "striped-zebra.import.so")
+ ; Assoc list with properties for your extension:
+ '((version 1)
+ (static "striped-zebra.o"))) ;; for static linking \ No newline at end of file