leankitkanban 0.1.1 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -2,7 +2,7 @@ source :rubygems
2
2
 
3
3
  gem "echoe", '4.6.3'
4
4
  gem "httparty", '0.8.1'
5
- gem "json", '1.6.1'
5
+ gem "json", '1.7.5'
6
6
 
7
7
  group :test do
8
8
  gem 'rspec', '2.7.0'
data/Gemfile.lock CHANGED
@@ -9,16 +9,16 @@ GEM
9
9
  rake (>= 0.9.2)
10
10
  rdoc (>= 3.6.1)
11
11
  rubyforge (>= 2.0.4)
12
- gemcutter (0.7.0)
12
+ gemcutter (0.7.1)
13
13
  httparty (0.8.1)
14
14
  multi_json
15
15
  multi_xml
16
- json (1.6.1)
17
- json_pure (1.6.1)
18
- multi_json (1.0.3)
19
- multi_xml (0.4.1)
20
- rake (0.9.2.2)
21
- rdoc (3.11)
16
+ json (1.7.5)
17
+ json_pure (1.8.0)
18
+ multi_json (1.7.6)
19
+ multi_xml (0.5.4)
20
+ rake (10.0.4)
21
+ rdoc (4.0.1)
22
22
  json (~> 1.4)
23
23
  rspec (2.7.0)
24
24
  rspec-core (~> 2.7.0)
@@ -37,5 +37,5 @@ PLATFORMS
37
37
  DEPENDENCIES
38
38
  echoe (= 4.6.3)
39
39
  httparty (= 0.8.1)
40
- json (= 1.6.1)
40
+ json (= 1.7.5)
41
41
  rspec (= 2.7.0)
data/Manifest CHANGED
@@ -11,6 +11,7 @@ lib/leankitkanban/backlog.rb
11
11
  lib/leankitkanban/board.rb
12
12
  lib/leankitkanban/card.rb
13
13
  lib/leankitkanban/config.rb
14
+ lib/leankitkanban/version.rb
14
15
  spec/leankitkanban/archive_spec.rb
15
16
  spec/leankitkanban/backlog_spec.rb
16
17
  spec/leankitkanban/board_spec.rb
data/README.md CHANGED
@@ -35,6 +35,21 @@ Usage
35
35
  # get a specific card from a board by external id
36
36
  @card = LeanKitKanban::Card.find_by_external_id(board_id, external_id)
37
37
 
38
+ # add a card, specified in JSON, to the board
39
+ @response = LeanKitKanban::Card.add(board_id, lane_id, position, body)
40
+
41
+ # add multiple cards, specified in JSON, to the board
42
+ @response = LeanKitKanban::Card.add_multiple(board_id, comment, cards)
43
+
44
+ # update a card specified in JSON
45
+ @response = LeanKitKanban::Card.update(board_id, body)
46
+
47
+ # delete a card from the board
48
+ @response = LeanKitKanban::Card.delete(board_id, card_id)
49
+
50
+ # delete multiple cards from the board
51
+ @response = LeanKitKanban::Card.delete_multiple(board_id, card_ids)
52
+
38
53
 
39
54
  # get board backlog
40
55
  @backlog = LeanKitKanban::Backlog.fetch(board_id)
data/Rakefile CHANGED
@@ -2,13 +2,13 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('leankitkanban', '0.1.1') do |p|
5
+ Echoe.new('leankitkanban', '0.1.4') do |p|
6
6
  p.description = "Ruby Wrapper around LeanKitKanban Api"
7
7
  p.url = "http://github.com/mlainez/leankitkanban"
8
8
  p.author = "Marc Lainez"
9
9
  p.email = "ml@theotherguys.be"
10
10
  p.ignore_pattern = ["tmp/*", "script/*"]
11
- p.runtime_dependencies = ['json =1.6.1', 'httparty =0.8.1']
11
+ p.runtime_dependencies = ['json >=1.6.1', 'httparty =0.8.1']
12
12
  p.development_dependencies = ['echoe =4.6.3', 'rspec =2.7.0']
13
13
  end
14
14
 
@@ -1,39 +1,39 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  Gem::Specification.new do |s|
4
- s.name = %q{leankitkanban}
5
- s.version = "0.1.1"
4
+ s.name = "leankitkanban"
5
+ s.version = "0.1.4"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
- s.authors = [%q{Marc Lainez}]
9
- s.date = %q{2011-10-30}
10
- s.description = %q{Ruby Wrapper around LeanKitKanban Api}
11
- s.email = %q{ml@theotherguys.be}
12
- s.extra_rdoc_files = [%q{LICENSE}, %q{README.md}, %q{lib/leankit_request.rb}, %q{lib/leankitkanban.rb}, %q{lib/leankitkanban/archive.rb}, %q{lib/leankitkanban/backlog.rb}, %q{lib/leankitkanban/board.rb}, %q{lib/leankitkanban/card.rb}, %q{lib/leankitkanban/config.rb}]
13
- s.files = [%q{Gemfile}, %q{Gemfile.lock}, %q{LICENSE}, %q{Manifest}, %q{README.md}, %q{Rakefile}, %q{lib/leankit_request.rb}, %q{lib/leankitkanban.rb}, %q{lib/leankitkanban/archive.rb}, %q{lib/leankitkanban/backlog.rb}, %q{lib/leankitkanban/board.rb}, %q{lib/leankitkanban/card.rb}, %q{lib/leankitkanban/config.rb}, %q{spec/leankitkanban/archive_spec.rb}, %q{spec/leankitkanban/backlog_spec.rb}, %q{spec/leankitkanban/board_spec.rb}, %q{spec/leankitkanban/card_spec.rb}, %q{spec/leankitkanban/config_spec.rb}, %q{spec/spec_helper.rb}, %q{spec/support/config_helper.rb}, %q{leankitkanban.gemspec}]
14
- s.homepage = %q{http://github.com/mlainez/leankitkanban}
15
- s.rdoc_options = [%q{--line-numbers}, %q{--inline-source}, %q{--title}, %q{Leankitkanban}, %q{--main}, %q{README.md}]
16
- s.require_paths = [%q{lib}]
17
- s.rubyforge_project = %q{leankitkanban}
18
- s.rubygems_version = %q{1.8.4}
19
- s.summary = %q{Ruby Wrapper around LeanKitKanban Api}
8
+ s.authors = ["Marc Lainez"]
9
+ s.date = "2013-06-11"
10
+ s.description = "Ruby Wrapper around LeanKitKanban Api"
11
+ s.email = "ml@theotherguys.be"
12
+ s.extra_rdoc_files = ["LICENSE", "README.md", "lib/leankit_request.rb", "lib/leankitkanban.rb", "lib/leankitkanban/archive.rb", "lib/leankitkanban/backlog.rb", "lib/leankitkanban/board.rb", "lib/leankitkanban/card.rb", "lib/leankitkanban/config.rb", "lib/leankitkanban/version.rb"]
13
+ s.files = ["Gemfile", "Gemfile.lock", "LICENSE", "Manifest", "README.md", "Rakefile", "lib/leankit_request.rb", "lib/leankitkanban.rb", "lib/leankitkanban/archive.rb", "lib/leankitkanban/backlog.rb", "lib/leankitkanban/board.rb", "lib/leankitkanban/card.rb", "lib/leankitkanban/config.rb", "lib/leankitkanban/version.rb", "spec/leankitkanban/archive_spec.rb", "spec/leankitkanban/backlog_spec.rb", "spec/leankitkanban/board_spec.rb", "spec/leankitkanban/card_spec.rb", "spec/leankitkanban/config_spec.rb", "spec/spec_helper.rb", "spec/support/config_helper.rb", "leankitkanban.gemspec"]
14
+ s.homepage = "http://github.com/mlainez/leankitkanban"
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Leankitkanban", "--main", "README.md"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = "leankitkanban"
18
+ s.rubygems_version = "1.8.24"
19
+ s.summary = "Ruby Wrapper around LeanKitKanban Api"
20
20
 
21
21
  if s.respond_to? :specification_version then
22
22
  s.specification_version = 3
23
23
 
24
24
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
25
- s.add_runtime_dependency(%q<json>, ["= 1.6.1"])
25
+ s.add_runtime_dependency(%q<json>, [">= 1.6.1"])
26
26
  s.add_runtime_dependency(%q<httparty>, ["= 0.8.1"])
27
27
  s.add_development_dependency(%q<echoe>, ["= 4.6.3"])
28
28
  s.add_development_dependency(%q<rspec>, ["= 2.7.0"])
29
29
  else
30
- s.add_dependency(%q<json>, ["= 1.6.1"])
30
+ s.add_dependency(%q<json>, [">= 1.6.1"])
31
31
  s.add_dependency(%q<httparty>, ["= 0.8.1"])
32
32
  s.add_dependency(%q<echoe>, ["= 4.6.3"])
33
33
  s.add_dependency(%q<rspec>, ["= 2.7.0"])
34
34
  end
35
35
  else
36
- s.add_dependency(%q<json>, ["= 1.6.1"])
36
+ s.add_dependency(%q<json>, [">= 1.6.1"])
37
37
  s.add_dependency(%q<httparty>, ["= 0.8.1"])
38
38
  s.add_dependency(%q<echoe>, ["= 4.6.3"])
39
39
  s.add_dependency(%q<rspec>, ["= 2.7.0"])
@@ -13,8 +13,17 @@ module LeanKitRequest
13
13
  parse_body(response.body)
14
14
  end
15
15
 
16
+ def post(api_call, body)
17
+ url = "#{LeanKitKanban::Config.uri}#{api_call}"
18
+ headers("Content-Type" => "application/json")
19
+ request = LeanKitKanban::Config.basic_auth_hash
20
+ request[:body] = body.to_json
21
+ response = super(url, request)
22
+ parse_body(response.body)
23
+ end
24
+
16
25
  def parse_body(body)
17
- json_data = JSON.parse body
26
+ json_data = JSON.parse(body)
18
27
  json_data[REPLY_DATA_KEY]
19
28
  end
20
29
  end
@@ -3,8 +3,23 @@ module LeanKitKanban
3
3
  include HTTParty
4
4
  include LeanKitRequest
5
5
 
6
+ DELETE_CARD = "/Board/{boardID}/DeleteCard/{cardID}"
7
+ DELETE_CARDS = "/Board/{boardID}/DeleteCards"
6
8
  FIND_CARD = "/Board/{boardID}/GetCard/{cardID}"
7
9
  FIND_CARD_EXT = "/Board/{boardID}/GetCardByExternalId/{externalID}"
10
+ ADD_CARD = "/Board/{boardID}/AddCard/Lane/{laneID}/Position/{position}"
11
+ ADD_CARDS = "/Board/{boardID}/AddCards?wipOverrideComment={comment}"
12
+ UPDATE_CARD = "/Board/{boardID}/UpdateCard/"
13
+
14
+ def self.delete(board_id, card_id)
15
+ api_call = DELETE_CARD.gsub("{boardID}", board_id.to_s).gsub("{cardID}", card_id.to_s)
16
+ post(api_call, {})
17
+ end
18
+
19
+ def self.delete_multiple(board_id, card_ids)
20
+ api_call = DELETE_CARDS.gsub("{boardID}", board_id.to_s)
21
+ post(api_call, card_ids)
22
+ end
8
23
 
9
24
  def self.find(board_id, card_id)
10
25
  api_call = FIND_CARD.gsub("{boardID}", board_id.to_s).gsub("{cardID}", card_id.to_s)
@@ -15,5 +30,20 @@ module LeanKitKanban
15
30
  api_call = FIND_CARD_EXT.gsub("{boardID}", board_id.to_s).gsub("{externalID}", external_id.to_s)
16
31
  get(api_call)
17
32
  end
33
+
34
+ def self.add(board_id, lane_id, position, body)
35
+ api_call = ADD_CARD.gsub("{boardID}", board_id.to_s).gsub("{laneID}", lane_id.to_s).gsub("{position}", position.to_s)
36
+ post(api_call, body)
37
+ end
38
+
39
+ def self.add_multiple(board_id, comment, cards)
40
+ api_call = ADD_CARDS.gsub("{boardID}", board_id.to_s).gsub("{comment}", URI::encode(comment))
41
+ post(api_call, cards)
42
+ end
43
+
44
+ def self.update(board_id, body)
45
+ api_call = UPDATE_CARD.gsub("{boardID}", board_id.to_s)
46
+ post(api_call, body)
47
+ end
18
48
  end
19
49
  end
@@ -0,0 +1,3 @@
1
+ module LeanKitKanban
2
+ VERSION = "0.0.1"
3
+ end
@@ -26,4 +26,80 @@ describe LeanKitKanban::Card do
26
26
  LeanKitKanban::Card.find_by_external_id(@board_id, @external_id)
27
27
  end
28
28
  end
29
+
30
+ describe :delete_multiple do
31
+ before :each do
32
+ @board_id = mock("boardID")
33
+ @card_ids = [ mock("cardID_0"), mock("cardID_1"), mock("cardID_2") ]
34
+ end
35
+
36
+ it "deletes the card whose ids are passed" do
37
+ api_call = "/Board/#{@board_id}/DeleteCards"
38
+ LeanKitKanban::Card.should_receive(:post).with(api_call, @card_ids)
39
+ LeanKitKanban::Card.delete_multiple(@board_id, @card_ids)
40
+ end
41
+ end
42
+
43
+ describe :delete do
44
+ before :each do
45
+ @board_id = mock("boardID")
46
+ @card_id = mock("cardID")
47
+ end
48
+
49
+ it "deletes the board card whose id is passed" do
50
+ api_call = "/Board/#{@board_id}/DeleteCard/#{@card_id}"
51
+ LeanKitKanban::Card.should_receive(:post).with(api_call, {})
52
+ LeanKitKanban::Card.delete(@board_id, @card_id)
53
+ end
54
+ end
55
+
56
+ describe :add do
57
+ before :each do
58
+ @board_id = mock("boardID")
59
+ @lane_id = mock("laneID")
60
+ @position = mock("position")
61
+ @body = { "Title" => mock("title"), "TypeId" => mock("typeID")}
62
+ end
63
+
64
+ it "adds the card into the lane and position provided" do
65
+ api_call = "/Board/#{@board_id}/AddCard/Lane/#{@lane_id}/Position/#{@position}"
66
+ LeanKitKanban::Card.should_receive(:post).with(api_call, @body)
67
+ LeanKitKanban::Card.add(@board_id, @lane_id, @position, @body)
68
+ end
69
+ end
70
+
71
+ describe :update do
72
+ before :each do
73
+ @board_id = mock("boardID")
74
+ @body = { "Id" => mock("Id"), "Title" => mock("title"), "Description" => mock("description") }
75
+ end
76
+
77
+ it "updates the card using the title and description provided" do
78
+ api_call = "/Board/#{@board_id}/UpdateCard/"
79
+ LeanKitKanban::Card.should_receive(:post).with(api_call, @body)
80
+ LeanKitKanban::Card.update(@board_id, @body)
81
+ end
82
+ end
83
+
84
+ describe :add_multiple do
85
+ before :each do
86
+ @cards = []
87
+ @board_id = mock("boardID")
88
+ @wip_comment = "this is a comment"
89
+
90
+ lane_ids = [ mock("lane_0"), mock("lane_1") ]
91
+ titles = [ mock("title_0"), mock("title_1") ]
92
+ type_ids = [ mock("type_0"), mock("type_1") ]
93
+
94
+ lane_ids.each_with_index { |item, i|
95
+ @cards[i] = { "LaneId" => lane_ids[i], "Title" => titles[i], "TypeId" => type_ids[i] }
96
+ }
97
+ end
98
+
99
+ it "adds the cards into the lanes and positions provided" do
100
+ api_call = "/Board/#{@board_id}/AddCards?wipOverrideComment=" + URI::encode(@wip_comment)
101
+ LeanKitKanban::Card.should_receive(:post).with(api_call, @cards)
102
+ LeanKitKanban::Card.add_multiple(@board_id, @wip_comment, @cards)
103
+ end
104
+ end
29
105
  end
metadata CHANGED
@@ -1,68 +1,85 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: leankitkanban
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.4
4
5
  prerelease:
5
- version: 0.1.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Marc Lainez
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-10-30 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2013-06-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: json
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - "="
22
- - !ruby/object:Gem::Version
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
23
21
  version: 1.6.1
24
22
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: httparty
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.6.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: httparty
32
+ requirement: !ruby/object:Gem::Requirement
30
33
  none: false
31
- requirements:
32
- - - "="
33
- - !ruby/object:Gem::Version
34
+ requirements:
35
+ - - '='
36
+ - !ruby/object:Gem::Version
34
37
  version: 0.8.1
35
38
  type: :runtime
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: echoe
39
39
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - '='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.8.1
46
+ - !ruby/object:Gem::Dependency
47
+ name: echoe
48
+ requirement: !ruby/object:Gem::Requirement
41
49
  none: false
42
- requirements:
43
- - - "="
44
- - !ruby/object:Gem::Version
50
+ requirements:
51
+ - - '='
52
+ - !ruby/object:Gem::Version
45
53
  version: 4.6.3
46
54
  type: :development
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: rspec
50
55
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 4.6.3
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec
64
+ requirement: !ruby/object:Gem::Requirement
52
65
  none: false
53
- requirements:
54
- - - "="
55
- - !ruby/object:Gem::Version
66
+ requirements:
67
+ - - '='
68
+ - !ruby/object:Gem::Version
56
69
  version: 2.7.0
57
70
  type: :development
58
- version_requirements: *id004
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - '='
76
+ - !ruby/object:Gem::Version
77
+ version: 2.7.0
59
78
  description: Ruby Wrapper around LeanKitKanban Api
60
79
  email: ml@theotherguys.be
61
80
  executables: []
62
-
63
81
  extensions: []
64
-
65
- extra_rdoc_files:
82
+ extra_rdoc_files:
66
83
  - LICENSE
67
84
  - README.md
68
85
  - lib/leankit_request.rb
@@ -72,7 +89,8 @@ extra_rdoc_files:
72
89
  - lib/leankitkanban/board.rb
73
90
  - lib/leankitkanban/card.rb
74
91
  - lib/leankitkanban/config.rb
75
- files:
92
+ - lib/leankitkanban/version.rb
93
+ files:
76
94
  - Gemfile
77
95
  - Gemfile.lock
78
96
  - LICENSE
@@ -86,6 +104,7 @@ files:
86
104
  - lib/leankitkanban/board.rb
87
105
  - lib/leankitkanban/card.rb
88
106
  - lib/leankitkanban/config.rb
107
+ - lib/leankitkanban/version.rb
89
108
  - spec/leankitkanban/archive_spec.rb
90
109
  - spec/leankitkanban/backlog_spec.rb
91
110
  - spec/leankitkanban/board_spec.rb
@@ -96,35 +115,32 @@ files:
96
115
  - leankitkanban.gemspec
97
116
  homepage: http://github.com/mlainez/leankitkanban
98
117
  licenses: []
99
-
100
118
  post_install_message:
101
- rdoc_options:
119
+ rdoc_options:
102
120
  - --line-numbers
103
121
  - --inline-source
104
122
  - --title
105
123
  - Leankitkanban
106
124
  - --main
107
125
  - README.md
108
- require_paths:
126
+ require_paths:
109
127
  - lib
110
- required_ruby_version: !ruby/object:Gem::Requirement
128
+ required_ruby_version: !ruby/object:Gem::Requirement
111
129
  none: false
112
- requirements:
113
- - - ">="
114
- - !ruby/object:Gem::Version
115
- version: "0"
116
- required_rubygems_version: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
135
  none: false
118
- requirements:
119
- - - ">="
120
- - !ruby/object:Gem::Version
121
- version: "1.2"
136
+ requirements:
137
+ - - ! '>='
138
+ - !ruby/object:Gem::Version
139
+ version: '1.2'
122
140
  requirements: []
123
-
124
141
  rubyforge_project: leankitkanban
125
- rubygems_version: 1.8.4
142
+ rubygems_version: 1.8.24
126
143
  signing_key:
127
144
  specification_version: 3
128
145
  summary: Ruby Wrapper around LeanKitKanban Api
129
146
  test_files: []
130
-