crowdtilt 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +15 -0
  2. data/lib/crowdtilt.rb +108 -0
  3. metadata +120 -0
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MGI4NTg1OTFjZGNkMGI1NzRiMjRkYWUyYWUxMGE4NTFjMWIwMWJiNw==
5
+ data.tar.gz: !binary |-
6
+ MzQ0OWE0NzZlNjczMWM1ZmEzMWQwMGNiY2M2NzA2ZTZkYWI1Y2VjNA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ NDg0MGE1YmU2YTk1MjRmOWIxMmU2NDhlNmY1MTkyN2E4OTRmZDg1ZDViM2I2
10
+ MzkyMmE1NGNhNmFlMGM3NjZiMTEzYmVlYTBjNDliMzljNDBiNTZjMTI5Mzdj
11
+ MjI3NjkxYTAyZjJlZjcyYWZmNTMwY2ZhNTZmNWIzYzVmZDE5NGE=
12
+ data.tar.gz: !binary |-
13
+ ZGFiMDdlZDEwMDgzYmU0ZTIyYjhiMjk0YmMyNDIzMWNmNDkyNjZlYTA5OTBh
14
+ NzBkOWEwY2UwMjk0NzVlYjk5MGI1OTEyM2QxYTQ5Yzg0MmQ0OTNmYTFhMTFh
15
+ NzhjNzBkOTA2ZWNjMzc4ZjAwMDExZWYzOTk5ZDkwN2QyZTVhMDQ=
data/lib/crowdtilt.rb ADDED
@@ -0,0 +1,108 @@
1
+ require 'active_support'
2
+ require 'faraday'
3
+ require 'faraday_middleware'
4
+ require 'json'
5
+
6
+ module Crowdtilt
7
+
8
+ class << self
9
+
10
+ attr_accessor :api_key, :api_secret, :mode, :base_url, :version
11
+
12
+ def configure(params)
13
+ raise ArgumentError, "You must include both the api_key and api_secret" unless (params.include?(:api_key) && params.include?(:api_secret))
14
+ @api_key = params[:api_key]
15
+ @api_secret = params[:api_secret]
16
+
17
+ @version = 'v1'
18
+
19
+ if params[:mode] == 'production'
20
+ @mode = 'production'
21
+ @base_url = 'https://api.crowdtilt.com'
22
+ else
23
+ @mode = 'sandbox'
24
+ @base_url = 'https://api-sandbox.crowdtilt.com'
25
+ end
26
+
27
+ @base_url = params[:base_url] if params[:base_url]
28
+ @version = params[:version] if params[:version]
29
+
30
+ true
31
+ end
32
+
33
+ def get(string)
34
+ request :get, uri(string)
35
+ end
36
+
37
+ def post(string, params={})
38
+ request :post, uri(string), params
39
+ end
40
+
41
+ def put(string, params={})
42
+ request :put, uri(string), params
43
+ end
44
+
45
+ def delete(string)
46
+ request :delete, uri(string)
47
+ end
48
+
49
+ def get_users()
50
+ get("/users")['users']
51
+ end
52
+
53
+ def get_user(id)
54
+ get("/users/#{id}")['user']
55
+ end
56
+
57
+ def create_user(user)
58
+ post("/users", { :user => user })['user']
59
+ end
60
+
61
+ def update_user(id, user)
62
+ put("/users/#{id}", { :user => user })['user']
63
+ end
64
+
65
+ private
66
+
67
+ def request(method,*args)
68
+ conn = Faraday.new(:url => @base_url) do |faraday|
69
+ # faraday.response :logger
70
+ faraday.request :json
71
+ faraday.response :json, :content_type => /\bjson$/
72
+ faraday.use :instrumentation
73
+ faraday.adapter Faraday.default_adapter
74
+ end
75
+ conn.basic_auth(@api_key, @api_secret)
76
+ conn.headers.update({'Content-Type' => 'application/json'})
77
+
78
+ res = conn.send method.to_sym, *args
79
+
80
+ case res.status
81
+ when 401
82
+ raise "Invalid credentials"
83
+ when 400...599
84
+ if res.body.include? 'error'
85
+ raise res.body['error']
86
+ else
87
+ raise 'Unknown error'
88
+ end
89
+ else
90
+ res.body
91
+ end
92
+ end
93
+
94
+ def uri(string)
95
+ if string =~ /^\/v/
96
+ string
97
+ elsif string =~ /^v/
98
+ '/' + string
99
+ elsif string =~ /^\//
100
+ "/#{@version}" + string
101
+ else
102
+ "/#{@version}/" + string
103
+ end
104
+ end
105
+
106
+ end
107
+
108
+ end
metadata ADDED
@@ -0,0 +1,120 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: crowdtilt
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Marc St Raymond
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '0.8'
34
+ - - <
35
+ - !ruby/object:Gem::Version
36
+ version: '0.10'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '0.8'
44
+ - - <
45
+ - !ruby/object:Gem::Version
46
+ version: '0.10'
47
+ - !ruby/object:Gem::Dependency
48
+ name: faraday_middleware
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 0.9.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ~>
59
+ - !ruby/object:Gem::Version
60
+ version: 0.9.0
61
+ - !ruby/object:Gem::Dependency
62
+ name: activesupport
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: json
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ description: A lightweight ruby wrapper for the Crowdtilt API
90
+ email: marc@crowditlt.com
91
+ executables: []
92
+ extensions: []
93
+ extra_rdoc_files: []
94
+ files:
95
+ - lib/crowdtilt.rb
96
+ homepage: https://www.crowdtilt.com/learn/developers
97
+ licenses:
98
+ - MIT
99
+ metadata: {}
100
+ post_install_message:
101
+ rdoc_options: []
102
+ require_paths:
103
+ - lib
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ! '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ requirements: []
115
+ rubyforge_project:
116
+ rubygems_version: 2.0.6
117
+ signing_key:
118
+ specification_version: 4
119
+ summary: Crowdtilt Ruby Client
120
+ test_files: []