bcx 0.1.0 → 0.1.1
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/Gemfile +0 -2
- data/README.md +8 -9
- data/Rakefile +2 -0
- data/bcx.gemspec +1 -1
- data/docs/configuration.html +0 -35
- data/docs/response_error.html +0 -35
- data/docs/version.html +1 -36
- data/lib/bcx/client/http.rb +1 -1
- data/lib/bcx/client/oauth.rb +1 -1
- data/lib/bcx/resources/person.rb +2 -1
- data/lib/bcx/resources/project.rb +34 -34
- data/lib/bcx/resources/todo.rb +31 -31
- data/lib/bcx/resources/todolist.rb +44 -44
- data/lib/bcx/version.rb +1 -1
- data/lib/bcx.rb +2 -1
- data/lib/rapidash/collection.rb +33 -0
- data/lib/tasks/docs.rake +41 -0
- metadata +18 -27
- data/docs/bcx.html +0 -171
- data/docs/http.html +0 -125
- data/docs/oauth.html +0 -127
- data/docs/person.html +0 -125
- data/docs/project.html +0 -143
- data/docs/public/fonts/fleurons.eot +0 -0
- data/docs/public/fonts/fleurons.ttf +0 -0
- data/docs/public/fonts/fleurons.woff +0 -0
- data/docs/public/images/gray.png +0 -0
- data/docs/todo.html +0 -138
- data/docs/todolist.html +0 -148
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
## Bcx
|
2
2
|
|
3
|
-
> NB. This is
|
3
|
+
> NB. This gem is missing a lot of the Basecamp endpoints. Please feel free [to contribute!](#contributing)
|
4
4
|
|
5
5
|
Fully-fledged Ruby API wrapper for Basecamp Next
|
6
6
|
|
@@ -47,7 +47,12 @@ You can get a `client_id` and `client_secret` from https://integrate.37signals.c
|
|
47
47
|
|
48
48
|
### Resources
|
49
49
|
|
50
|
-
|
50
|
+
The following resources are fully implemented and tested.
|
51
|
+
|
52
|
+
* [People](http://paulspringett.github.io/bcx/docs/person.html)
|
53
|
+
* [Projects](http://paulspringett.github.io/bcx/docs/project.html)
|
54
|
+
* [Todolists](http://paulspringett.github.io/bcx/docs/todolist.html)
|
55
|
+
* [Todos](http://paulspringett.github.io/bcx/docs/todo.html)
|
51
56
|
|
52
57
|
#### Bang operators
|
53
58
|
|
@@ -99,14 +104,8 @@ See the full [annotated source code](http://paulspringett.github.io/bcx).
|
|
99
104
|
The docs are generated using [Docco](http://jashkenas.github.io/docco/). To generate the docs, run:
|
100
105
|
|
101
106
|
```bash
|
102
|
-
$ git checkout master
|
103
107
|
$ npm install -g docco
|
104
|
-
$
|
105
|
-
$ git commit -am "Updated docs"
|
106
|
-
|
107
|
-
$ git checkout gh-pages
|
108
|
-
$ git checkout master -- docs/ # Copy docs changes across and stage
|
109
|
-
$ git commit -m "Updated docs on gh-pages"
|
108
|
+
$ rake docs:generate
|
110
109
|
```
|
111
110
|
|
112
111
|
### Contributing
|
data/Rakefile
CHANGED
data/bcx.gemspec
CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
gem.version = Bcx::VERSION
|
17
17
|
|
18
|
-
gem.add_runtime_dependency 'rapidash', '
|
18
|
+
gem.add_runtime_dependency 'rapidash', '0.3.0.beta'
|
19
19
|
|
20
20
|
gem.add_development_dependency 'rake'
|
21
21
|
gem.add_development_dependency 'rspec'
|
data/docs/configuration.html
CHANGED
@@ -19,46 +19,11 @@
|
|
19
19
|
<div id="jump_page">
|
20
20
|
|
21
21
|
|
22
|
-
<a class="source" href="bcx.html">
|
23
|
-
bcx.rb
|
24
|
-
</a>
|
25
|
-
|
26
|
-
|
27
|
-
<a class="source" href="http.html">
|
28
|
-
http.rb
|
29
|
-
</a>
|
30
|
-
|
31
|
-
|
32
|
-
<a class="source" href="oauth.html">
|
33
|
-
oauth.rb
|
34
|
-
</a>
|
35
|
-
|
36
|
-
|
37
22
|
<a class="source" href="configuration.html">
|
38
23
|
configuration.rb
|
39
24
|
</a>
|
40
25
|
|
41
26
|
|
42
|
-
<a class="source" href="person.html">
|
43
|
-
person.rb
|
44
|
-
</a>
|
45
|
-
|
46
|
-
|
47
|
-
<a class="source" href="project.html">
|
48
|
-
project.rb
|
49
|
-
</a>
|
50
|
-
|
51
|
-
|
52
|
-
<a class="source" href="todo.html">
|
53
|
-
todo.rb
|
54
|
-
</a>
|
55
|
-
|
56
|
-
|
57
|
-
<a class="source" href="todolist.html">
|
58
|
-
todolist.rb
|
59
|
-
</a>
|
60
|
-
|
61
|
-
|
62
27
|
<a class="source" href="response_error.html">
|
63
28
|
response_error.rb
|
64
29
|
</a>
|
data/docs/response_error.html
CHANGED
@@ -19,46 +19,11 @@
|
|
19
19
|
<div id="jump_page">
|
20
20
|
|
21
21
|
|
22
|
-
<a class="source" href="bcx.html">
|
23
|
-
bcx.rb
|
24
|
-
</a>
|
25
|
-
|
26
|
-
|
27
|
-
<a class="source" href="http.html">
|
28
|
-
http.rb
|
29
|
-
</a>
|
30
|
-
|
31
|
-
|
32
|
-
<a class="source" href="oauth.html">
|
33
|
-
oauth.rb
|
34
|
-
</a>
|
35
|
-
|
36
|
-
|
37
22
|
<a class="source" href="configuration.html">
|
38
23
|
configuration.rb
|
39
24
|
</a>
|
40
25
|
|
41
26
|
|
42
|
-
<a class="source" href="person.html">
|
43
|
-
person.rb
|
44
|
-
</a>
|
45
|
-
|
46
|
-
|
47
|
-
<a class="source" href="project.html">
|
48
|
-
project.rb
|
49
|
-
</a>
|
50
|
-
|
51
|
-
|
52
|
-
<a class="source" href="todo.html">
|
53
|
-
todo.rb
|
54
|
-
</a>
|
55
|
-
|
56
|
-
|
57
|
-
<a class="source" href="todolist.html">
|
58
|
-
todolist.rb
|
59
|
-
</a>
|
60
|
-
|
61
|
-
|
62
27
|
<a class="source" href="response_error.html">
|
63
28
|
response_error.rb
|
64
29
|
</a>
|
data/docs/version.html
CHANGED
@@ -19,46 +19,11 @@
|
|
19
19
|
<div id="jump_page">
|
20
20
|
|
21
21
|
|
22
|
-
<a class="source" href="bcx.html">
|
23
|
-
bcx.rb
|
24
|
-
</a>
|
25
|
-
|
26
|
-
|
27
|
-
<a class="source" href="http.html">
|
28
|
-
http.rb
|
29
|
-
</a>
|
30
|
-
|
31
|
-
|
32
|
-
<a class="source" href="oauth.html">
|
33
|
-
oauth.rb
|
34
|
-
</a>
|
35
|
-
|
36
|
-
|
37
22
|
<a class="source" href="configuration.html">
|
38
23
|
configuration.rb
|
39
24
|
</a>
|
40
25
|
|
41
26
|
|
42
|
-
<a class="source" href="person.html">
|
43
|
-
person.rb
|
44
|
-
</a>
|
45
|
-
|
46
|
-
|
47
|
-
<a class="source" href="project.html">
|
48
|
-
project.rb
|
49
|
-
</a>
|
50
|
-
|
51
|
-
|
52
|
-
<a class="source" href="todo.html">
|
53
|
-
todo.rb
|
54
|
-
</a>
|
55
|
-
|
56
|
-
|
57
|
-
<a class="source" href="todolist.html">
|
58
|
-
todolist.rb
|
59
|
-
</a>
|
60
|
-
|
61
|
-
|
62
27
|
<a class="source" href="response_error.html">
|
63
28
|
response_error.rb
|
64
29
|
</a>
|
@@ -92,7 +57,7 @@
|
|
92
57
|
</div>
|
93
58
|
|
94
59
|
<div class="content"><div class='highlight'><pre><span class="class"><span class="keyword">module</span> <span class="title">Bcx</span></span>
|
95
|
-
<span class="constant">VERSION</span> = <span class="string">"0.0
|
60
|
+
<span class="constant">VERSION</span> = <span class="string">"0.1.0"</span>
|
96
61
|
<span class="keyword">end</span></pre></div></div>
|
97
62
|
|
98
63
|
</li>
|
data/lib/bcx/client/http.rb
CHANGED
data/lib/bcx/client/oauth.rb
CHANGED
data/lib/bcx/resources/person.rb
CHANGED
@@ -1,39 +1,39 @@
|
|
1
|
+
# ## Projects
|
2
|
+
#
|
3
|
+
# Provides access to projects resoource and other nested resources
|
4
|
+
#
|
5
|
+
# #### Fetch all projects
|
6
|
+
# `GET /projects.json`
|
7
|
+
#
|
8
|
+
# client.projects!
|
9
|
+
#
|
10
|
+
# #### Fetch archived projects
|
11
|
+
# `GET /projects/archived.json`
|
12
|
+
#
|
13
|
+
# clients.projects.archived!
|
14
|
+
#
|
15
|
+
# #### Fetch single project with ID of 123
|
16
|
+
# `GET /projects/123.json`
|
17
|
+
#
|
18
|
+
# client.projects!(123)
|
19
|
+
#
|
20
|
+
# #### Create a project
|
21
|
+
# `POST /projects.json`
|
22
|
+
#
|
23
|
+
# client.projects.create!(name: 'Acme project', description: 'This is a new project')
|
24
|
+
#
|
25
|
+
# #### Update an existing project
|
26
|
+
# `PUT /projects/123.json`
|
27
|
+
#
|
28
|
+
# client.projects(123).update!(description: 'A new description')
|
29
|
+
#
|
30
|
+
# #### Delete a project
|
31
|
+
# `DELETE /projects/123.json`
|
32
|
+
#
|
33
|
+
# client.projects(123).delete!
|
34
|
+
#
|
1
35
|
module Bcx
|
2
36
|
module Resources
|
3
|
-
|
4
|
-
# Bcx::Resources::Project
|
5
|
-
# Provides access to projects resoource and other nested resources
|
6
|
-
#
|
7
|
-
# Fetch all projects
|
8
|
-
# GET /projects.json
|
9
|
-
#
|
10
|
-
# client.projects!
|
11
|
-
#
|
12
|
-
# Fetch archived projects
|
13
|
-
# GET /projects/archived.json
|
14
|
-
#
|
15
|
-
# clients.projects.archived!
|
16
|
-
#
|
17
|
-
# Fetch single project with ID of 123
|
18
|
-
# GET /projects/123.json
|
19
|
-
#
|
20
|
-
# client.projects!(123)
|
21
|
-
#
|
22
|
-
# Create a project
|
23
|
-
# POST /projects.json
|
24
|
-
#
|
25
|
-
# client.projects.create!(name: 'Acme project', description: 'This is a new project')
|
26
|
-
#
|
27
|
-
# Update an existing project
|
28
|
-
# PUT /projects/123.json
|
29
|
-
#
|
30
|
-
# client.projects(123).update!(description: 'A new description')
|
31
|
-
#
|
32
|
-
# Delete a project
|
33
|
-
# DELETE /projects/123.json
|
34
|
-
#
|
35
|
-
# client.projects(123).delete!
|
36
|
-
#
|
37
37
|
class Project < Rapidash::Base
|
38
38
|
resource :todolists
|
39
39
|
resource :todos
|
data/lib/bcx/resources/todo.rb
CHANGED
@@ -1,36 +1,36 @@
|
|
1
|
+
# ## Todo
|
2
|
+
#
|
3
|
+
# Provides access to todolist resoource both at the client level and per-project
|
4
|
+
#
|
5
|
+
# #### Get todos for a todolist
|
6
|
+
# `GET /todolists/1.json`
|
7
|
+
#
|
8
|
+
# todolist = client.todolists!(1)
|
9
|
+
# todolist.todos.remaining
|
10
|
+
# todolist.todos.completed
|
11
|
+
#
|
12
|
+
# #### Get a specific todo
|
13
|
+
# `GET /projects/1/todos/2.json`
|
14
|
+
#
|
15
|
+
# client.projects(1).todos!(2)
|
16
|
+
#
|
17
|
+
# #### Create a todo
|
18
|
+
# `POST /projects/1/todolists/2/todos.json`
|
19
|
+
#
|
20
|
+
# client.projects(1).todolists(2).todos.create!(content: 'Update copy text')
|
21
|
+
#
|
22
|
+
# #### Update a todo
|
23
|
+
# `PUT /projects/1/todos/2.json`
|
24
|
+
#
|
25
|
+
# client.projects(1).todos(2).update!(completed: true)
|
26
|
+
#
|
27
|
+
# #### Delete a todo
|
28
|
+
# `DELETE /projects/1/todos/2.json`
|
29
|
+
#
|
30
|
+
# client.projects(1).todos(2).delete!
|
31
|
+
#
|
1
32
|
module Bcx
|
2
33
|
module Resources
|
3
|
-
|
4
|
-
# Bcx::Resources::Todo
|
5
|
-
# Provides access to todolist resoource both at the client level and per-project
|
6
|
-
#
|
7
|
-
# Get todos for a todolist
|
8
|
-
# GET /todolists/1.json
|
9
|
-
#
|
10
|
-
# todolist = client.todolists!(1)
|
11
|
-
# todolist.todos.remaining
|
12
|
-
# todolist.todos.completed
|
13
|
-
#
|
14
|
-
# Get a specific todo
|
15
|
-
# GET /projects/1/todos/2.json
|
16
|
-
#
|
17
|
-
# client.projects(1).todos!(2)
|
18
|
-
#
|
19
|
-
# Create a todo
|
20
|
-
# POST /projects/1/todolists/2/todos.json
|
21
|
-
#
|
22
|
-
# client.projects(1).todolists(2).todos.create!(content: 'Update copy text')
|
23
|
-
#
|
24
|
-
# Update a todo
|
25
|
-
# PUT /projects/1/todos/2.json
|
26
|
-
#
|
27
|
-
# client.projects(1).todos(2).update!(completed: true)
|
28
|
-
#
|
29
|
-
# Delete a todo
|
30
|
-
# DELETE /projects/1/todos/2.json
|
31
|
-
#
|
32
|
-
# client.projects(1).todos(2).delete!
|
33
|
-
#
|
34
34
|
class Todo < Rapidash::Base
|
35
35
|
end
|
36
36
|
end
|
@@ -1,49 +1,49 @@
|
|
1
|
+
# ## Todolists
|
2
|
+
#
|
3
|
+
# Provides access to todolist resoource both at the client level and per-project
|
4
|
+
#
|
5
|
+
# #### Get all todolists for a project
|
6
|
+
# `GET /projects/123/todolists.json`
|
7
|
+
#
|
8
|
+
# client.projects(123).todolists!
|
9
|
+
#
|
10
|
+
# #### Get all completed todolists for a project
|
11
|
+
# `GET /projects/1/todolists/completed.json`
|
12
|
+
#
|
13
|
+
# client.projects(123).todolists.completed!
|
14
|
+
#
|
15
|
+
# #### Get todolists for all projects
|
16
|
+
# `GET /todolists.json`
|
17
|
+
#
|
18
|
+
# client.todolists!
|
19
|
+
#
|
20
|
+
# #### Get completed todolists for all projects
|
21
|
+
# `GET /todolists/completed.json`
|
22
|
+
#
|
23
|
+
# client.todolists.completed!
|
24
|
+
#
|
25
|
+
# #### Get specific todolist including the todos
|
26
|
+
# `GET /projects/123/todolists/456.json`
|
27
|
+
#
|
28
|
+
# client.projects(123).todolists!(456)
|
29
|
+
#
|
30
|
+
# #### Create a new todolist
|
31
|
+
# `POST /projects/1/todolists.json`
|
32
|
+
#
|
33
|
+
# client.projects(123).todolists.create!(name: 'My todolist', description: 'This is a todolist')
|
34
|
+
#
|
35
|
+
# #### Update an existing todolist
|
36
|
+
# `PUT /projects/123/todolists/456.json`
|
37
|
+
#
|
38
|
+
# client.projects(123).todolists(456).update!(name: 'Updated todolist')
|
39
|
+
#
|
40
|
+
# #### Delete a todolist
|
41
|
+
# `DELETE /projects/123/todolists/456.json`
|
42
|
+
#
|
43
|
+
# client.projects(123).todolists(456).delete!
|
44
|
+
#
|
1
45
|
module Bcx
|
2
46
|
module Resources
|
3
|
-
|
4
|
-
# Bcx::Resources::Todolist
|
5
|
-
# Provides access to todolist resoource both at the client level and per-project
|
6
|
-
#
|
7
|
-
# Get all todolists for a project
|
8
|
-
# GET /projects/123/todolists.json
|
9
|
-
#
|
10
|
-
# client.projects(123).todolists!
|
11
|
-
#
|
12
|
-
# Get all completed todolists for a project
|
13
|
-
# GET /projects/1/todolists/completed.json
|
14
|
-
#
|
15
|
-
# client.projects(123).todolists.completed!
|
16
|
-
#
|
17
|
-
# Get todolists for all projects
|
18
|
-
# GET /todolists.json
|
19
|
-
#
|
20
|
-
# client.todolists!
|
21
|
-
#
|
22
|
-
# Get completed todolists for all projects
|
23
|
-
# GET /todolists/completed.json
|
24
|
-
#
|
25
|
-
# client.todolists.completed!
|
26
|
-
#
|
27
|
-
# Get specific todolist including the todos
|
28
|
-
# GET /projects/123/todolists/456.json
|
29
|
-
#
|
30
|
-
# client.projects(123).todolists!(456)
|
31
|
-
#
|
32
|
-
# Create a new todolist
|
33
|
-
# POST /projects/1/todolists.json
|
34
|
-
#
|
35
|
-
# client.projects(123).todolists.create!(name: 'My todolist', description: 'This is a todolist')
|
36
|
-
#
|
37
|
-
# Update an existing todolist
|
38
|
-
# PUT /projects/123/todolists/456.json
|
39
|
-
#
|
40
|
-
# client.projects(123).todolists(456).update!(name: 'Updated todolist')
|
41
|
-
#
|
42
|
-
# Delete a todolist
|
43
|
-
# DELETE /projects/123/todolists/456.json
|
44
|
-
#
|
45
|
-
# client.projects(123).todolists(456).delete!
|
46
|
-
#
|
47
47
|
class Todolist < Rapidash::Base
|
48
48
|
resource :todos, class_name: 'Bcx::Resources::Todo'
|
49
49
|
|
data/lib/bcx/version.rb
CHANGED
data/lib/bcx.rb
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
module Rapidash
|
2
|
+
module Collection
|
3
|
+
|
4
|
+
def self.included(base)
|
5
|
+
base.extend ClassMethods
|
6
|
+
end
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
def collection(name, attrs = {})
|
10
|
+
path = attrs[:path] || name.to_s
|
11
|
+
path.gsub!(/^\//, '')
|
12
|
+
|
13
|
+
method = attrs[:method] || :get
|
14
|
+
|
15
|
+
define_method("#{name}!") do
|
16
|
+
original_url = @url
|
17
|
+
|
18
|
+
@url += "/#{path}"
|
19
|
+
@options[:method] = method
|
20
|
+
result = call!
|
21
|
+
|
22
|
+
@url = original_url
|
23
|
+
|
24
|
+
result
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class Rapidash::Base
|
32
|
+
include Rapidash::Collection
|
33
|
+
end
|
data/lib/tasks/docs.rake
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
namespace :docs do
|
2
|
+
desc "Generate the latest docs from the source code and add to gh-pages"
|
3
|
+
task :generate do
|
4
|
+
ensure_clean_git
|
5
|
+
run "git checkout #{branch}"
|
6
|
+
run "docco lib/**/*.rb"
|
7
|
+
run "git commit -am 'Updated documentation'"
|
8
|
+
run "git checkout gh-pages"
|
9
|
+
run "git checkout #{branch} -- docs/" # Copy docs changes across and stage
|
10
|
+
run "git commit -am 'Updated docs on gh-pages'"
|
11
|
+
run "git checkout #{branch}"
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "Deploy docs to GitHub pages"
|
15
|
+
task :deploy do
|
16
|
+
ensure_clean_git
|
17
|
+
run "git checkout gh-pages"
|
18
|
+
run "git push origin gh-pages"
|
19
|
+
run "git checkout #{branch}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def branch
|
24
|
+
@branch ||= `git symbolic-ref HEAD 2> /dev/null`.gsub("refs/heads/", "").strip
|
25
|
+
end
|
26
|
+
|
27
|
+
def git_dirty?
|
28
|
+
`[[ $(git diff --shortstat 2> /dev/null | tail -n1) != "" ]]`
|
29
|
+
dirty = $?.success?
|
30
|
+
end
|
31
|
+
|
32
|
+
def ensure_clean_git
|
33
|
+
if git_dirty?
|
34
|
+
raise "Can't deploy without a clean git status."
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def run(command)
|
39
|
+
puts " #{command}"
|
40
|
+
%x{#{command}}
|
41
|
+
end
|