crowdtilt 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []