basecamp3 0.1.3
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.
- checksums.yaml +7 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Gemfile +2 -0
- data/LICENSE.txt +21 -0
- data/README.md +65 -0
- data/Rakefile +6 -0
- data/basecamp3.gemspec +38 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/docs/Basecamp3.html +367 -0
- data/docs/Basecamp3/Campfire.html +901 -0
- data/docs/Basecamp3/CampfireLine.html +1025 -0
- data/docs/Basecamp3/Comment.html +1284 -0
- data/docs/Basecamp3/Concerns.html +117 -0
- data/docs/Basecamp3/Concerns/Bucketable.html +211 -0
- data/docs/Basecamp3/Concerns/Commentable.html +285 -0
- data/docs/Basecamp3/Concerns/Creatorable.html +209 -0
- data/docs/Basecamp3/Concerns/Parentable.html +211 -0
- data/docs/Basecamp3/Concerns/Recordingable.html +189 -0
- data/docs/Basecamp3/Concerns/Recordingable/ClassMethods.html +236 -0
- data/docs/Basecamp3/Document.html +1262 -0
- data/docs/Basecamp3/Forward.html +1070 -0
- data/docs/Basecamp3/Inbox.html +840 -0
- data/docs/Basecamp3/Message.html +1262 -0
- data/docs/Basecamp3/MessageBoard.html +840 -0
- data/docs/Basecamp3/MessageType.html +1160 -0
- data/docs/Basecamp3/Model.html +236 -0
- data/docs/Basecamp3/Person.html +1288 -0
- data/docs/Basecamp3/Project.html +1280 -0
- data/docs/Basecamp3/Question.html +1050 -0
- data/docs/Basecamp3/QuestionAnswer.html +887 -0
- data/docs/Basecamp3/Questionnaire.html +840 -0
- data/docs/Basecamp3/Request.html +933 -0
- data/docs/Basecamp3/ResponseParser.html +303 -0
- data/docs/Basecamp3/Schedule.html +840 -0
- data/docs/Basecamp3/ScheduleEntry.html +1560 -0
- data/docs/Basecamp3/Todo.html +1726 -0
- data/docs/Basecamp3/TodoList.html +1480 -0
- data/docs/Basecamp3/TodoSet.html +980 -0
- data/docs/Basecamp3/TypeMapper.html +329 -0
- data/docs/Basecamp3/Vault.html +1514 -0
- data/docs/_index.html +415 -0
- data/docs/class_list.html +51 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +492 -0
- data/docs/file.README.html +157 -0
- data/docs/file_list.html +56 -0
- data/docs/frames.html +17 -0
- data/docs/index.html +157 -0
- data/docs/js/app.js +248 -0
- data/docs/js/full_list.js +216 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +1875 -0
- data/docs/top-level-namespace.html +110 -0
- data/lib/basecamp3.rb +61 -0
- data/lib/basecamp3/concerns/bucketable.rb +17 -0
- data/lib/basecamp3/concerns/commentable.rb +15 -0
- data/lib/basecamp3/concerns/creatorable.rb +16 -0
- data/lib/basecamp3/concerns/parentable.rb +17 -0
- data/lib/basecamp3/concerns/recordingable.rb +22 -0
- data/lib/basecamp3/model.rb +23 -0
- data/lib/basecamp3/models/campfire.rb +42 -0
- data/lib/basecamp3/models/campfire_line.rb +52 -0
- data/lib/basecamp3/models/comment.rb +65 -0
- data/lib/basecamp3/models/document.rb +71 -0
- data/lib/basecamp3/models/forward.rb +40 -0
- data/lib/basecamp3/models/inbox.rb +31 -0
- data/lib/basecamp3/models/message.rb +73 -0
- data/lib/basecamp3/models/message_board.rb +31 -0
- data/lib/basecamp3/models/message_type.rb +68 -0
- data/lib/basecamp3/models/person.rb +46 -0
- data/lib/basecamp3/models/project.rb +70 -0
- data/lib/basecamp3/models/question.rb +43 -0
- data/lib/basecamp3/models/question_answer.rb +35 -0
- data/lib/basecamp3/models/questionnaire.rb +31 -0
- data/lib/basecamp3/models/schedule.rb +31 -0
- data/lib/basecamp3/models/schedule_entry.rb +93 -0
- data/lib/basecamp3/models/todo.rb +108 -0
- data/lib/basecamp3/models/todo_list.rb +77 -0
- data/lib/basecamp3/models/todo_set.rb +33 -0
- data/lib/basecamp3/models/vault.rb +79 -0
- data/lib/basecamp3/request.rb +163 -0
- data/lib/basecamp3/response_parser.rb +44 -0
- data/lib/basecamp3/type_mapper.rb +53 -0
- data/lib/basecamp3/version.rb +3 -0
- metadata +202 -0
@@ -0,0 +1,163 @@
|
|
1
|
+
# A class for handling requests
|
2
|
+
class Basecamp3::Request
|
3
|
+
|
4
|
+
# Initializes the request object.
|
5
|
+
#
|
6
|
+
# @param [String] access_token the data to send in the request
|
7
|
+
# @param [String] uri
|
8
|
+
def initialize(access_token, uri)
|
9
|
+
@access_token = access_token
|
10
|
+
@uri = uri
|
11
|
+
end
|
12
|
+
|
13
|
+
# Sends the request.
|
14
|
+
#
|
15
|
+
# @param [Symbol] method the symbol of the http method
|
16
|
+
# @param [String] path the request path
|
17
|
+
# @param [Hash] data the request body
|
18
|
+
# @param [String] model the name of the model
|
19
|
+
#
|
20
|
+
# @return [Basecamp3::Model, OpenStruct]
|
21
|
+
def request(method, path, data = nil, model = 'raw')
|
22
|
+
uri = build_request_uri(path)
|
23
|
+
https = build_https_object(uri)
|
24
|
+
request = build_request_object(method, uri)
|
25
|
+
|
26
|
+
request.body = data.to_json unless data.nil?
|
27
|
+
|
28
|
+
get_response(https, request, model)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Sends the get request.
|
32
|
+
#
|
33
|
+
# @param [String] path the request path
|
34
|
+
# @param [Hash] params the get params
|
35
|
+
# @param [String] model the name of the model
|
36
|
+
#
|
37
|
+
# @return [Basecamp3::Model, OpenStruct]
|
38
|
+
def get(path, params = {}, model = 'raw')
|
39
|
+
request(:get, "#{path}#{hash_to_get_query(params)}", nil, model)
|
40
|
+
end
|
41
|
+
|
42
|
+
# Sends the post request.
|
43
|
+
#
|
44
|
+
# @param [String] path the request path
|
45
|
+
# @param [Hash] data the request body
|
46
|
+
# @param [String] model the name of the model
|
47
|
+
#
|
48
|
+
# @return [Basecamp3::Model, OpenStruct]
|
49
|
+
def post(path, data = nil, model = 'raw')
|
50
|
+
request(:post, path, data, model)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Sends the put request.
|
54
|
+
#
|
55
|
+
# @param [String] path the request path
|
56
|
+
# @param [Hash] data the request body
|
57
|
+
# @param [String] model the name of the model
|
58
|
+
#
|
59
|
+
# @return [Basecamp3::Model, OpenStruct]
|
60
|
+
def put(path, data = nil, model = 'raw')
|
61
|
+
request(:put, path, data, model)
|
62
|
+
end
|
63
|
+
|
64
|
+
# Sends the delete request.
|
65
|
+
#
|
66
|
+
# @param [String] path the request path
|
67
|
+
# @param [String] model the name of the model
|
68
|
+
#
|
69
|
+
# @return [Basecamp3::Model, OpenStruct]
|
70
|
+
def delete(path, model = 'raw')
|
71
|
+
request(:delete, path, nil, model)
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
# Returns the response.
|
77
|
+
#
|
78
|
+
# @private
|
79
|
+
#
|
80
|
+
# @param [Net:HTTP] https the http object
|
81
|
+
# @param [Net::HTTP::Get, Net::HTTP::Post, Net::HTTP::Put, Net::HTTP::Delete] request the request object
|
82
|
+
# @param [Class] model the class of the model
|
83
|
+
#
|
84
|
+
# @return [Basecamp3::Model, OpenStruct]
|
85
|
+
def get_response(https, request, model)
|
86
|
+
response = https.request(request)
|
87
|
+
|
88
|
+
code = response.code.to_i
|
89
|
+
message = response.message
|
90
|
+
|
91
|
+
raise message if [400, 403, 404, 507].include?(code)
|
92
|
+
|
93
|
+
return true if code == 204
|
94
|
+
|
95
|
+
json = response.body.nil? ? nil : JSON.parse(response.body)
|
96
|
+
|
97
|
+
return json if model == 'raw'
|
98
|
+
|
99
|
+
Basecamp3::ResponseParser.parse(json, model)
|
100
|
+
end
|
101
|
+
|
102
|
+
# Builds the request uri.
|
103
|
+
#
|
104
|
+
# @private
|
105
|
+
#
|
106
|
+
# @param [String] path the path of the request
|
107
|
+
#
|
108
|
+
# @return [String]
|
109
|
+
def build_request_uri(path)
|
110
|
+
uri = URI.parse("#{@uri}#{path}")
|
111
|
+
uri.path += '.json'
|
112
|
+
|
113
|
+
uri
|
114
|
+
end
|
115
|
+
|
116
|
+
# Builds the https object.
|
117
|
+
#
|
118
|
+
# @private
|
119
|
+
#
|
120
|
+
# @param [String] uri the request uri
|
121
|
+
#
|
122
|
+
# @return [Net::HTTP]
|
123
|
+
def build_https_object(uri)
|
124
|
+
https = Net::HTTP.new(uri.host, uri.port)
|
125
|
+
https.use_ssl = true
|
126
|
+
|
127
|
+
https
|
128
|
+
end
|
129
|
+
|
130
|
+
# Builds the request object.
|
131
|
+
#
|
132
|
+
# @private
|
133
|
+
#
|
134
|
+
# @param [Symbol] method the symbol of the http method
|
135
|
+
# @param [String] uri the request uri
|
136
|
+
#
|
137
|
+
# @return [Net::HTTP::Get, Net::HTTP::Post, Net::HTTP::Put, Net::HTTP::Delete]
|
138
|
+
# @raise [StandardError] raises an error for unsupported http method
|
139
|
+
def build_request_object(method, uri)
|
140
|
+
raise "Unsupported http method: #{method.to_s}" unless [:get, :post, :put, :delete].include?(method)
|
141
|
+
|
142
|
+
request = Object.const_get("Net::HTTP::#{method.to_s.capitalize}").new(uri.request_uri)
|
143
|
+
request['Authorization'] = "Bearer #{@access_token}"
|
144
|
+
request['Content-Type'] = 'application/json'
|
145
|
+
|
146
|
+
request
|
147
|
+
end
|
148
|
+
|
149
|
+
# Builds get query string from the given hash.
|
150
|
+
#
|
151
|
+
# @private
|
152
|
+
#
|
153
|
+
# @param [Hash] hash
|
154
|
+
#
|
155
|
+
# @return [String]
|
156
|
+
def hash_to_get_query(hash)
|
157
|
+
if !hash.nil? && !hash.empty?
|
158
|
+
"?#{hash.map{ |i, v| "#{i}=#{v}" }.join('&')}"
|
159
|
+
else
|
160
|
+
''
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# The basecamp response parser
|
2
|
+
class Basecamp3::ResponseParser
|
3
|
+
|
4
|
+
# Parses the given response to the given wrapper model.
|
5
|
+
#
|
6
|
+
# @param [Hash] response The hash with data which should be parsed to the wrapper model
|
7
|
+
# @param [Class] model The class of the model
|
8
|
+
#
|
9
|
+
# @return [Basecamp3::Model, Array<Basecamp3::Model>, nil]
|
10
|
+
# @raise [StandardError] raises an error for unsupported response type
|
11
|
+
def self.parse(response, model)
|
12
|
+
case response
|
13
|
+
when Hash
|
14
|
+
map_object(response, model)
|
15
|
+
when Array
|
16
|
+
response.map do |item|
|
17
|
+
map_object(item, model)
|
18
|
+
end
|
19
|
+
when NilClass
|
20
|
+
nil
|
21
|
+
else
|
22
|
+
raise 'Unsupported response type'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
# Parses the given hash to the given wrapper model.
|
29
|
+
#
|
30
|
+
# @private
|
31
|
+
#
|
32
|
+
# @param [Hash] object The hash with data which should be parsed to the wrapper model
|
33
|
+
# @param [Class] model The class of the model
|
34
|
+
#
|
35
|
+
# @return [Basecamp3::Model]
|
36
|
+
# @raise [StandardError] raises an error for unsupported model type
|
37
|
+
def self.map_object(object, model)
|
38
|
+
begin
|
39
|
+
model.new(object)
|
40
|
+
rescue
|
41
|
+
raise 'Unsupported model type. Try to call for a raw response'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# The basecamp type to wrapper type mapper
|
2
|
+
class Basecamp3::TypeMapper
|
3
|
+
|
4
|
+
# Maps the basecamp model type to wrapper model type.
|
5
|
+
#
|
6
|
+
# @param [String] basecamp_type the basecamp model name
|
7
|
+
#
|
8
|
+
# @return [Class, OpenStruct]
|
9
|
+
def self.map(basecamp_type)
|
10
|
+
case basecamp_type
|
11
|
+
when 'Project'
|
12
|
+
Basecamp3::Project
|
13
|
+
when 'Chat::Transcript'
|
14
|
+
Basecamp3::Campfire
|
15
|
+
when 'Chat::Lines::Text'
|
16
|
+
Basecamp3::CampfireLine
|
17
|
+
when 'Comment'
|
18
|
+
Basecamp3::Comment
|
19
|
+
when 'Document'
|
20
|
+
Basecamp3::Document
|
21
|
+
when 'Inbox::Forward'
|
22
|
+
Basecamp3::Forward
|
23
|
+
when 'Inbox'
|
24
|
+
Basecamp3::Inbox
|
25
|
+
when 'Message::Board'
|
26
|
+
Basecamp3::MessageBoard
|
27
|
+
when 'Message'
|
28
|
+
Basecamp3::Message
|
29
|
+
when 'User'
|
30
|
+
Basecamp3::Person
|
31
|
+
when 'Question::Answer'
|
32
|
+
Basecamp3::QuestionAnswer
|
33
|
+
when 'Questionnaire'
|
34
|
+
Basecamp3::Questionnaire
|
35
|
+
when 'Question'
|
36
|
+
Basecamp3::Question
|
37
|
+
when 'Schedule::Entry'
|
38
|
+
Basecamp3::ScheduleEntry
|
39
|
+
when 'Schedule'
|
40
|
+
Basecamp3::Schedule
|
41
|
+
when 'Todolist'
|
42
|
+
Basecamp3::TodoList
|
43
|
+
when 'Todo'
|
44
|
+
Basecamp3::Todo
|
45
|
+
when 'Todoset'
|
46
|
+
Basecamp3::TodoSet
|
47
|
+
when 'Vault'
|
48
|
+
Basecamp3::Vault
|
49
|
+
else
|
50
|
+
OpenStruct
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
metadata
ADDED
@@ -0,0 +1,202 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: basecamp3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- goth-pl
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-05-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.13'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.13'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: webmock
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: yard
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 0.9.9
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 0.9.9
|
83
|
+
description: A simple Ruby Wrapper for the Basecamp 3 API
|
84
|
+
email:
|
85
|
+
- m.szycko@gmail.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- ".gitignore"
|
91
|
+
- ".rspec"
|
92
|
+
- ".travis.yml"
|
93
|
+
- Gemfile
|
94
|
+
- LICENSE.txt
|
95
|
+
- README.md
|
96
|
+
- Rakefile
|
97
|
+
- basecamp3.gemspec
|
98
|
+
- bin/console
|
99
|
+
- bin/setup
|
100
|
+
- docs/Basecamp3.html
|
101
|
+
- docs/Basecamp3/Campfire.html
|
102
|
+
- docs/Basecamp3/CampfireLine.html
|
103
|
+
- docs/Basecamp3/Comment.html
|
104
|
+
- docs/Basecamp3/Concerns.html
|
105
|
+
- docs/Basecamp3/Concerns/Bucketable.html
|
106
|
+
- docs/Basecamp3/Concerns/Commentable.html
|
107
|
+
- docs/Basecamp3/Concerns/Creatorable.html
|
108
|
+
- docs/Basecamp3/Concerns/Parentable.html
|
109
|
+
- docs/Basecamp3/Concerns/Recordingable.html
|
110
|
+
- docs/Basecamp3/Concerns/Recordingable/ClassMethods.html
|
111
|
+
- docs/Basecamp3/Document.html
|
112
|
+
- docs/Basecamp3/Forward.html
|
113
|
+
- docs/Basecamp3/Inbox.html
|
114
|
+
- docs/Basecamp3/Message.html
|
115
|
+
- docs/Basecamp3/MessageBoard.html
|
116
|
+
- docs/Basecamp3/MessageType.html
|
117
|
+
- docs/Basecamp3/Model.html
|
118
|
+
- docs/Basecamp3/Person.html
|
119
|
+
- docs/Basecamp3/Project.html
|
120
|
+
- docs/Basecamp3/Question.html
|
121
|
+
- docs/Basecamp3/QuestionAnswer.html
|
122
|
+
- docs/Basecamp3/Questionnaire.html
|
123
|
+
- docs/Basecamp3/Request.html
|
124
|
+
- docs/Basecamp3/ResponseParser.html
|
125
|
+
- docs/Basecamp3/Schedule.html
|
126
|
+
- docs/Basecamp3/ScheduleEntry.html
|
127
|
+
- docs/Basecamp3/Todo.html
|
128
|
+
- docs/Basecamp3/TodoList.html
|
129
|
+
- docs/Basecamp3/TodoSet.html
|
130
|
+
- docs/Basecamp3/TypeMapper.html
|
131
|
+
- docs/Basecamp3/Vault.html
|
132
|
+
- docs/_index.html
|
133
|
+
- docs/class_list.html
|
134
|
+
- docs/css/common.css
|
135
|
+
- docs/css/full_list.css
|
136
|
+
- docs/css/style.css
|
137
|
+
- docs/file.README.html
|
138
|
+
- docs/file_list.html
|
139
|
+
- docs/frames.html
|
140
|
+
- docs/index.html
|
141
|
+
- docs/js/app.js
|
142
|
+
- docs/js/full_list.js
|
143
|
+
- docs/js/jquery.js
|
144
|
+
- docs/method_list.html
|
145
|
+
- docs/top-level-namespace.html
|
146
|
+
- lib/basecamp3.rb
|
147
|
+
- lib/basecamp3/concerns/bucketable.rb
|
148
|
+
- lib/basecamp3/concerns/commentable.rb
|
149
|
+
- lib/basecamp3/concerns/creatorable.rb
|
150
|
+
- lib/basecamp3/concerns/parentable.rb
|
151
|
+
- lib/basecamp3/concerns/recordingable.rb
|
152
|
+
- lib/basecamp3/model.rb
|
153
|
+
- lib/basecamp3/models/campfire.rb
|
154
|
+
- lib/basecamp3/models/campfire_line.rb
|
155
|
+
- lib/basecamp3/models/comment.rb
|
156
|
+
- lib/basecamp3/models/document.rb
|
157
|
+
- lib/basecamp3/models/forward.rb
|
158
|
+
- lib/basecamp3/models/inbox.rb
|
159
|
+
- lib/basecamp3/models/message.rb
|
160
|
+
- lib/basecamp3/models/message_board.rb
|
161
|
+
- lib/basecamp3/models/message_type.rb
|
162
|
+
- lib/basecamp3/models/person.rb
|
163
|
+
- lib/basecamp3/models/project.rb
|
164
|
+
- lib/basecamp3/models/question.rb
|
165
|
+
- lib/basecamp3/models/question_answer.rb
|
166
|
+
- lib/basecamp3/models/questionnaire.rb
|
167
|
+
- lib/basecamp3/models/schedule.rb
|
168
|
+
- lib/basecamp3/models/schedule_entry.rb
|
169
|
+
- lib/basecamp3/models/todo.rb
|
170
|
+
- lib/basecamp3/models/todo_list.rb
|
171
|
+
- lib/basecamp3/models/todo_set.rb
|
172
|
+
- lib/basecamp3/models/vault.rb
|
173
|
+
- lib/basecamp3/request.rb
|
174
|
+
- lib/basecamp3/response_parser.rb
|
175
|
+
- lib/basecamp3/type_mapper.rb
|
176
|
+
- lib/basecamp3/version.rb
|
177
|
+
homepage: https://github.com/miastologia/basecamp3-api-wrapper
|
178
|
+
licenses:
|
179
|
+
- MIT
|
180
|
+
metadata:
|
181
|
+
allowed_push_host: https://rubygems.org
|
182
|
+
post_install_message:
|
183
|
+
rdoc_options: []
|
184
|
+
require_paths:
|
185
|
+
- lib
|
186
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
187
|
+
requirements:
|
188
|
+
- - ">="
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '0'
|
191
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
192
|
+
requirements:
|
193
|
+
- - ">="
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '0'
|
196
|
+
requirements: []
|
197
|
+
rubyforge_project:
|
198
|
+
rubygems_version: 2.4.5
|
199
|
+
signing_key:
|
200
|
+
specification_version: 4
|
201
|
+
summary: Basecamp3 API Wrapper
|
202
|
+
test_files: []
|