statusbot-api 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,31 @@
1
+ require "statusbot/models"
2
+ require "statusbot/api/version"
3
+ require "statusbot/api/error"
4
+ require "statusbot/api/base"
5
+ require 'date'
6
+
7
+ module Statusbot
8
+ module Api
9
+ @@connected = false
10
+
11
+ def self.api_for(user)
12
+ connect
13
+ Base.new(user)
14
+ end
15
+
16
+ def self.connect
17
+ unless @@connected
18
+ begin
19
+ Statusbot::Models.connect
20
+ @@connected = true
21
+ rescue => e
22
+ raise DatabaseConnectionError.new(e)
23
+ end
24
+ end
25
+ end
26
+
27
+ def self.disconnect
28
+ @@connected = false
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,111 @@
1
+ module Statusbot
2
+ module Api
3
+ class Base
4
+ attr_reader :user
5
+
6
+ def initialize(user_email)
7
+ begin
8
+ @user = User.find_by_email!(user_email)
9
+ rescue ActiveRecord::RecordNotFound
10
+ raise UserNotRegisteredError
11
+ end
12
+ end
13
+
14
+ def add_update(description=nil)
15
+ raise InvalidUpdateError if description.nil? or description.strip.empty?
16
+ done
17
+ update = Update.new(
18
+ :user => user,
19
+ :description => description,
20
+ :start_time => DateTime.now
21
+ )
22
+ begin
23
+ update.save!
24
+ rescue => e
25
+ raise DatabaseConnectionError.new(e)
26
+ end
27
+ end
28
+
29
+ def get_updates
30
+ begin
31
+ user.updates
32
+ rescue => e
33
+ raise DatabaseConnectionError.new(e)
34
+ end
35
+ end
36
+
37
+ def add_goal(description=nil)
38
+ raise InvalidUpdateError if description.nil? or description.strip.empty?
39
+ goal = Goal.new(
40
+ :user => user,
41
+ :description => description
42
+ )
43
+ begin
44
+ goal.save!
45
+ rescue => e
46
+ raise DatabaseConnectionError.new(e)
47
+ end
48
+ end
49
+
50
+ def get_goals
51
+ begin
52
+ user.goals
53
+ rescue => e
54
+ raise DatabaseConnectionError.new(e)
55
+ end
56
+ end
57
+
58
+ def add_wait(description=nil)
59
+ raise InvalidUpdateError if description.nil? or description.strip.empty?
60
+ wait = Wait.new(
61
+ :user => user,
62
+ :description => description
63
+ )
64
+ user.waits << wait
65
+ begin
66
+ user.save!
67
+ rescue => e
68
+ raise DatabaseConnectionError.new(e)
69
+ end
70
+ end
71
+
72
+ def get_waits
73
+ begin
74
+ user.waits
75
+ rescue => e
76
+ raise DatabaseConnectionError.new(e)
77
+ end
78
+ end
79
+
80
+ def remind(wait_id=nil, description=nil)
81
+ raise InvalidUpdateError unless wait_id.is_a? Integer
82
+ begin
83
+ wait = Wait.find(wait_id)
84
+ rescue => e
85
+ raise InvalidUpdateError.new(e)
86
+ end
87
+ wait.pings << Ping.new(:description => description)
88
+
89
+ begin
90
+ wait.save!
91
+ rescue => e
92
+ raise DatabaseConnectionError.new(e)
93
+ end
94
+ end
95
+
96
+ def done
97
+ begin
98
+ ActiveRecord::Base.transaction do
99
+ user.updates.where(:stop_time => nil).each do |update|
100
+ update.stop_time = DateTime.now
101
+ update.save!
102
+ end
103
+ end
104
+ rescue => e
105
+ raise DatabaseConnectionError.new(e)
106
+ end
107
+ user.reload
108
+ end
109
+ end
110
+ end
111
+ end
@@ -0,0 +1,15 @@
1
+ module Statusbot
2
+ module Api
3
+ class Error < StandardError
4
+ end
5
+
6
+ class UserNotRegisteredError < Error
7
+ end
8
+
9
+ class DatabaseConnectionError < Error
10
+ end
11
+
12
+ class InvalidUpdateError < Error
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ module Statusbot
2
+ module Api
3
+ VERSION = "0.8.0"
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,168 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: statusbot-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Eric Hayes
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-08-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: statusbot-models
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.6.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: 0.6.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: bundler
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1.6'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.6'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 2.14.1
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 2.14.1
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec-rails
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: debugger
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: simplecov
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 0.7.1
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 0.7.1
110
+ - !ruby/object:Gem::Dependency
111
+ name: database_cleaner
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ description: Provides API functionality to statusbot.me
127
+ email:
128
+ - eric@deployfx.com.com
129
+ executables: []
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - lib/statusbot/api/base.rb
134
+ - lib/statusbot/api/error.rb
135
+ - lib/statusbot/api/version.rb
136
+ - lib/statusbot/api.rb
137
+ homepage: https://github.com/ejhayes/statusbot-api
138
+ licenses:
139
+ - MIT
140
+ post_install_message:
141
+ rdoc_options: []
142
+ require_paths:
143
+ - lib
144
+ required_ruby_version: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ segments:
151
+ - 0
152
+ hash: 4041294746190707034
153
+ required_rubygems_version: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ segments:
160
+ - 0
161
+ hash: 4041294746190707034
162
+ requirements: []
163
+ rubyforge_project:
164
+ rubygems_version: 1.8.23.2
165
+ signing_key:
166
+ specification_version: 3
167
+ summary: Public API for statusbot.me workers
168
+ test_files: []