@@ -21,25 +21,25 @@ module Agents |
||
| 21 | 21 |
event_description <<-MD |
| 22 | 22 |
Events are the raw JSON provided by the Basecamp API. Should look something like: |
| 23 | 23 |
|
| 24 |
- {
|
|
| 25 |
- "creator": {
|
|
| 26 |
- "fullsize_avatar_url": "https://dge9rmgqjs8m1.cloudfront.net/global/dfsdfsdfdsf/original.gif?r=3", |
|
| 27 |
- "avatar_url": "http://dge9rmgqjs8m1.cloudfront.net/global/dfsdfsdfdsf/avatar.gif?r=3", |
|
| 28 |
- "name": "Dominik Sander", |
|
| 29 |
- "id": 123456 |
|
| 30 |
- }, |
|
| 31 |
- "attachments": [], |
|
| 32 |
- "raw_excerpt": "test test", |
|
| 33 |
- "excerpt": "test test", |
|
| 34 |
- "id": 6454342343, |
|
| 35 |
- "created_at": "2014-04-17T10:25:31.000+02:00", |
|
| 36 |
- "updated_at": "2014-04-17T10:25:31.000+02:00", |
|
| 37 |
- "summary": "commented on whaat", |
|
| 38 |
- "action": "commented on", |
|
| 39 |
- "target": "whaat", |
|
| 40 |
- "url": "https://basecamp.com/12456/api/v1/projects/76454545-explore-basecamp/messages/76454545-whaat.json", |
|
| 41 |
- "html_url": "https://basecamp.com/12456/projects/76454545-explore-basecamp/messages/76454545-whaat#comment_76454545" |
|
| 42 |
- } |
|
| 24 |
+ {
|
|
| 25 |
+ "creator": {
|
|
| 26 |
+ "fullsize_avatar_url": "https://dge9rmgqjs8m1.cloudfront.net/global/dfsdfsdfdsf/original.gif?r=3", |
|
| 27 |
+ "avatar_url": "http://dge9rmgqjs8m1.cloudfront.net/global/dfsdfsdfdsf/avatar.gif?r=3", |
|
| 28 |
+ "name": "Dominik Sander", |
|
| 29 |
+ "id": 123456 |
|
| 30 |
+ }, |
|
| 31 |
+ "attachments": [], |
|
| 32 |
+ "raw_excerpt": "test test", |
|
| 33 |
+ "excerpt": "test test", |
|
| 34 |
+ "id": 6454342343, |
|
| 35 |
+ "created_at": "2014-04-17T10:25:31.000+02:00", |
|
| 36 |
+ "updated_at": "2014-04-17T10:25:31.000+02:00", |
|
| 37 |
+ "summary": "commented on whaat", |
|
| 38 |
+ "action": "commented on", |
|
| 39 |
+ "target": "whaat", |
|
| 40 |
+ "url": "https://basecamp.com/12456/api/v1/projects/76454545-explore-basecamp/messages/76454545-whaat.json", |
|
| 41 |
+ "html_url": "https://basecamp.com/12456/projects/76454545-explore-basecamp/messages/76454545-whaat#comment_76454545" |
|
| 42 |
+ } |
|
| 43 | 43 |
MD |
| 44 | 44 |
|
| 45 | 45 |
default_schedule "every_10m" |
@@ -61,12 +61,13 @@ module Agents |
||
| 61 | 61 |
def check |
| 62 | 62 |
service.prepare_request |
| 63 | 63 |
reponse = HTTParty.get request_url, request_options.merge(query_parameters) |
| 64 |
- memory[:last_run] = Time.now.utc.iso8601 |
|
| 65 |
- if last_check_at != nil |
|
| 66 |
- JSON.parse(reponse.body).each do |event| |
|
| 64 |
+ events = JSON.parse(reponse.body) |
|
| 65 |
+ if !memory[:last_event].nil? |
|
| 66 |
+ events.each do |event| |
|
| 67 | 67 |
create_event :payload => event |
| 68 | 68 |
end |
| 69 | 69 |
end |
| 70 |
+ memory[:last_event] = events.first['created_at'] if events.length > 0 |
|
| 70 | 71 |
save! |
| 71 | 72 |
end |
| 72 | 73 |
|
@@ -80,7 +81,7 @@ module Agents |
||
| 80 | 81 |
end |
| 81 | 82 |
|
| 82 | 83 |
def query_parameters |
| 83 |
- memory[:last_run].present? ? { :query => {:since => memory[:last_run]} } : {}
|
|
| 84 |
+ memory[:last_event].present? ? { :query => {:since => memory[:last_event]} } : {}
|
|
| 84 | 85 |
end |
| 85 | 86 |
end |
| 86 | 87 |
end |
@@ -6,7 +6,7 @@ describe Agents::BasecampAgent do |
||
| 6 | 6 |
|
| 7 | 7 |
before(:each) do |
| 8 | 8 |
stub_request(:get, /json$/).to_return(:body => File.read(Rails.root.join("spec/data_fixtures/basecamp.json")), :status => 200, :headers => {"Content-Type" => "text/json"})
|
| 9 |
- stub_request(:get, /Z$/).to_return(:body => File.read(Rails.root.join("spec/data_fixtures/basecamp.json")), :status => 200, :headers => {"Content-Type" => "text/json"})
|
|
| 9 |
+ stub_request(:get, /02:00$/).to_return(:body => File.read(Rails.root.join("spec/data_fixtures/basecamp.json")), :status => 200, :headers => {"Content-Type" => "text/json"})
|
|
| 10 | 10 |
@valid_params = { :project_id => 6789 }
|
| 11 | 11 |
|
| 12 | 12 |
@checker = Agents::BasecampAgent.new(:name => "somename", :options => @valid_params) |
@@ -43,7 +43,7 @@ describe Agents::BasecampAgent do |
||
| 43 | 43 |
|
| 44 | 44 |
it "should provide the since attribute after the first run" do |
| 45 | 45 |
time = (Time.now-1.minute).iso8601 |
| 46 |
- @checker.memory[:last_run] = time |
|
| 46 |
+ @checker.memory[:last_event] = time |
|
| 47 | 47 |
@checker.save |
| 48 | 48 |
@checker.reload.send(:query_parameters).should == {:query => {:since => time}}
|
| 49 | 49 |
end |
@@ -51,9 +51,10 @@ describe Agents::BasecampAgent do |
||
| 51 | 51 |
describe "#check" do |
| 52 | 52 |
it "should not emit events on its first run" do |
| 53 | 53 |
expect { @checker.check }.to change { Event.count }.by(0)
|
| 54 |
+ expect(@checker.memory[:last_event]).to eq '2014-04-17T10:25:31.000+02:00' |
|
| 54 | 55 |
end |
| 55 | 56 |
it "should check that initial run creates an event" do |
| 56 |
- @checker.last_check_at = Time.now - 1.minute |
|
| 57 |
+ @checker.memory[:last_event] = '2014-04-17T10:25:31.000+02:00' |
|
| 57 | 58 |
expect { @checker.check }.to change { Event.count }.by(1)
|
| 58 | 59 |
end |
| 59 | 60 |
end |
@@ -61,7 +62,7 @@ describe Agents::BasecampAgent do |
||
| 61 | 62 |
describe "#working?" do |
| 62 | 63 |
it "it is working when at least one event was emited" do |
| 63 | 64 |
@checker.should_not be_working |
| 64 |
- @checker.last_check_at = Time.now - 1.minute |
|
| 65 |
+ @checker.memory[:last_event] = '2014-04-17T10:25:31.000+02:00' |
|
| 65 | 66 |
@checker.check |
| 66 | 67 |
@checker.reload.should be_working |
| 67 | 68 |
end |