statusbot-api 0.8.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.
- data/lib/statusbot/api.rb +31 -0
- data/lib/statusbot/api/base.rb +111 -0
- data/lib/statusbot/api/error.rb +15 -0
- data/lib/statusbot/api/version.rb +5 -0
- metadata +168 -0
@@ -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
|
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: []
|