dashku 0.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 (2) hide show
  1. data/lib/dashku.rb +162 -0
  2. metadata +77 -0
@@ -0,0 +1,162 @@
1
+ require 'httparty'
2
+
3
+ class Dashku
4
+ include HTTParty
5
+
6
+ def initialize
7
+ @api_url = "http://176.58.100.203"
8
+ end
9
+
10
+ def api_key
11
+ @api_key
12
+ end
13
+
14
+ def api_url
15
+ @api_url
16
+ end
17
+
18
+ def set_api_key(api_key)
19
+ @api_key = api_key
20
+ end
21
+
22
+ def set_api_url(api_url)
23
+ self.class.base_uri api_url
24
+ @api_url = api_url
25
+ end
26
+
27
+ def get_dashboards
28
+ request = self.class.get "/api/dashboards", :query => {:apiKey => @api_key}
29
+ if request.response.class == Net::HTTPOK
30
+ return request.parsed_response
31
+ elsif request.response.class == Net::HTTPUnauthorized
32
+ raise ApiKeyInvalidError
33
+ end
34
+ end
35
+
36
+ def get_dashboard(id)
37
+ request = self.class.get "/api/dashboards/#{id}", :query => {:apiKey => @api_key}
38
+ if request.response.class == Net::HTTPOK
39
+ return request.parsed_response
40
+ elsif request.response.class == Net::HTTPBadRequest
41
+ raise DashboardNotFoundError
42
+ elsif request.response.class == Net::HTTPUnauthorized
43
+ raise ApiKeyInvalidError
44
+ end
45
+ end
46
+
47
+ def create_dashboard(attrs)
48
+ request = self.class.post "/api/dashboards", :query => {:apiKey => @api_key}, :body => attrs
49
+ if request.response.class == Net::HTTPAccepted
50
+ return request.parsed_response
51
+ elsif request.response.class == Net::HTTPUnauthorized
52
+ raise ApiKeyInvalidError
53
+ end
54
+ end
55
+
56
+ def update_dashboard(attrs)
57
+ id = attrs["_id"] || attrs[:_id]
58
+ raise MissingIdError if id.nil?
59
+ request = self.class.put "/api/dashboards/#{id}", :query => {:apiKey => @api_key}, :body => attrs
60
+ if request.response.class == Net::HTTPCreated
61
+ return request.parsed_response
62
+ elsif request.response.class == Net::HTTPUnauthorized
63
+ raise ApiKeyInvalidError
64
+ end
65
+ end
66
+
67
+ def delete_dashboard(id)
68
+ request = self.class.delete "/api/dashboards/#{id}", :query => {:apiKey => @api_key}
69
+ if request.response.class == Net::HTTPCreated
70
+ return request.parsed_response
71
+ elsif request.response.class == Net::HTTPBadRequest
72
+ raise DashboardNotFoundError
73
+ elsif request.response.class == Net::HTTPUnauthorized
74
+ raise ApiKeyInvalidError
75
+ end
76
+ end
77
+
78
+ def create_widget(attrs)
79
+ dashboardId = attrs["dashboardId"] || attrs[:dashboardId]
80
+ raise MissingDashboardIdError if dashboardId.nil?
81
+ request = self.class.post "/api/dashboards/#{dashboardId}/widgets", :query => {:apiKey => @api_key}, :body => attrs
82
+ if request.response.class == Net::HTTPAccepted
83
+ return request.parsed_response
84
+ elsif request.response.class == Net::HTTPBadRequest
85
+ raise DashboardNotFoundError
86
+ elsif request.response.class == Net::HTTPUnauthorized
87
+ raise ApiKeyInvalidError
88
+ end
89
+ end
90
+
91
+ def update_widget(attrs)
92
+ dashboardId = attrs["dashboardId"] || attrs[:dashboardId]
93
+ raise MissingDashboardIdError if dashboardId.nil?
94
+ id = attrs["_id"] || attrs[:_id]
95
+ raise MissingIdError if id.nil?
96
+ request = self.class.put "/api/dashboards/#{dashboardId}/widgets/#{id}", :query => {:apiKey => @api_key}, :body => attrs
97
+ if request.response.class == Net::HTTPCreated
98
+ return request.parsed_response
99
+ elsif request.response.class == Net::HTTPBadRequest
100
+ raise DashboardNotFoundError
101
+ elsif request.response.class == Net::HTTPUnauthorized
102
+ raise ApiKeyInvalidError
103
+ end
104
+ end
105
+
106
+ def delete_widget(dashboardId, id)
107
+ request = self.class.delete "/api/dashboards/#{dashboardId}/widgets/#{id}", :query => {:apiKey => @api_key}
108
+ if request.response.class == Net::HTTPCreated
109
+ return request.parsed_response
110
+ elsif request.response.class == Net::HTTPBadRequest
111
+ if request.parsed_response["reason"].match("No dashboard found")
112
+ raise DashboardNotFoundError
113
+ else
114
+ raise WidgetNotFoundError
115
+ end
116
+ elsif request.response.class == Net::HTTPUnauthorized
117
+ raise ApiKeyInvalidError
118
+ end
119
+ end
120
+
121
+ def transmission(data)
122
+ request = self.class.post "/api/transmission", :query => {:apiKey => @api_key}, :body => data
123
+ if request.response.class == Net::HTTPOK
124
+ return request.parsed_response
125
+ elsif request.response.class == Net::HTTPBadRequest
126
+ raise DashboardNotFoundError
127
+ elsif request.response.class == Net::HTTPUnauthorized
128
+ raise ApiKeyInvalidError
129
+ end
130
+ end
131
+
132
+ end
133
+
134
+ class ApiKeyInvalidError < StandardError
135
+ def message
136
+ "Couldn't find a user with that API key"
137
+ end
138
+ end
139
+
140
+ class DashboardNotFoundError < StandardError
141
+ def message
142
+ "Dashboard not found"
143
+ end
144
+ end
145
+
146
+ class WidgetNotFoundError < StandardError
147
+ def message
148
+ "Widget not found"
149
+ end
150
+ end
151
+
152
+ class MissingIdError < StandardError
153
+ def message
154
+ "Your attributes are missing an _id field"
155
+ end
156
+ end
157
+
158
+ class MissingDashboardIdError < StandardError
159
+ def message
160
+ "Your attributes are missing a dashboardId field"
161
+ end
162
+ end
metadata ADDED
@@ -0,0 +1,77 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dashku
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Paul Jensen
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-06-28 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 2.10.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 2.10.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: httparty
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 0.8.3
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.8.3
46
+ description: A wrapper to the Dashku API
47
+ email: admin@dashku.com
48
+ executables: []
49
+ extensions: []
50
+ extra_rdoc_files: []
51
+ files:
52
+ - lib/dashku.rb
53
+ homepage: https://dashku.com
54
+ licenses: []
55
+ post_install_message:
56
+ rdoc_options: []
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ requirements: []
72
+ rubyforge_project:
73
+ rubygems_version: 1.8.24
74
+ signing_key:
75
+ specification_version: 3
76
+ summary: A wrapper to the Dashku API
77
+ test_files: []