Module: Basecamp
- Defined in:
- lib/basecamp/resources/comment.rb,
lib/basecamp/base.rb,
lib/basecamp/record.rb,
lib/basecamp/resource.rb,
lib/basecamp/connection.rb,
lib/basecamp/resources/person.rb,
lib/basecamp/resources/company.rb,
lib/basecamp/resources/message.rb,
lib/basecamp/resources/project.rb,
lib/basecamp/resources/category.rb,
lib/basecamp/resources/milestone.rb,
lib/basecamp/resources/todo_item.rb,
lib/basecamp/resources/todo_list.rb,
lib/basecamp/resources/attachment.rb,
lib/basecamp/resources/time_entry.rb
Overview
Creating different types of categories
The type parameter is required when creating a category. For exampe, to create an attachment category for a particular project:
c = Basecamp::Category.new(:project_id => 1037)
c.type = 'attachment'
c.name = 'Pictures'
c.save # => true
Defined Under Namespace
Classes: Attachment, Category, Comment, Company, Connection, Message, Milestone, Person, Project, Record, Resource, TimeEntry, TodoItem, TodoList
Class Attribute Summary collapse
-
.access_token ⇒ Object
readonly
Returns the value of attribute access_token.
-
.password ⇒ Object
readonly
Returns the value of attribute password.
-
.site ⇒ Object
readonly
Returns the value of attribute site.
-
.use_oauth ⇒ Object
readonly
Returns the value of attribute use_oauth.
-
.use_ssl ⇒ Object
readonly
Returns the value of attribute use_ssl.
-
.use_xml ⇒ Object
Returns the value of attribute use_xml.
-
.user ⇒ Object
readonly
Returns the value of attribute user.
Class Method Summary collapse
- .connection ⇒ Object
- .establish_connection!(site, user, password, use_ssl = false, use_xml = true) ⇒ Object
- .establish_oauth_connection!(site, access_token, use_ssl = false, use_xml = true) ⇒ Object
-
.record(path, parameters = {}) ⇒ Object
A convenience method for wrapping the result of a query in a Record object.
-
.records(node, path, parameters = {}) ⇒ Object
A convenience method for wrapping the result of a query in Record objects.
-
.request(path, parameters = {}) ⇒ Object
Make a raw web-service request to Basecamp.
Class Attribute Details
.access_token ⇒ Object (readonly)
Returns the value of attribute access_token.
4 5 6 |
# File 'lib/basecamp/base.rb', line 4 def access_token @access_token end |
.password ⇒ Object (readonly)
Returns the value of attribute password.
4 5 6 |
# File 'lib/basecamp/base.rb', line 4 def password @password end |
.site ⇒ Object (readonly)
Returns the value of attribute site.
4 5 6 |
# File 'lib/basecamp/base.rb', line 4 def site @site end |
.use_oauth ⇒ Object (readonly)
Returns the value of attribute use_oauth.
4 5 6 |
# File 'lib/basecamp/base.rb', line 4 def use_oauth @use_oauth end |
.use_ssl ⇒ Object (readonly)
Returns the value of attribute use_ssl.
4 5 6 |
# File 'lib/basecamp/base.rb', line 4 def use_ssl @use_ssl end |
.use_xml ⇒ Object
Returns the value of attribute use_xml.
3 4 5 |
# File 'lib/basecamp/base.rb', line 3 def use_xml @use_xml end |
.user ⇒ Object (readonly)
Returns the value of attribute user.
4 5 6 |
# File 'lib/basecamp/base.rb', line 4 def user @user end |
Class Method Details
.connection ⇒ Object
36 37 38 |
# File 'lib/basecamp/base.rb', line 36 def connection @connection || raise('No connection established') end |
.establish_connection!(site, user, password, use_ssl = false, use_xml = true) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/basecamp/base.rb', line 6 def establish_connection!(site, user, password, use_ssl = false, use_xml = true) @site = site @user = user @password = password @use_ssl = use_ssl @use_xml = use_xml @use_oauth = false Resource.user = user Resource.password = password Resource.site = (use_ssl ? "https" : "http") + "://" + site Resource.format = (use_xml ? :xml : :json) @connection = Connection.new(self) end |
.establish_oauth_connection!(site, access_token, use_ssl = false, use_xml = true) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/basecamp/base.rb', line 22 def establish_oauth_connection!(site, access_token, use_ssl = false, use_xml = true) @site = site @use_ssl = use_ssl @use_xml = use_xml @use_oauth = true @access_token = access_token Resource.site = (use_ssl ? "https" : "http") + "://" + site Resource.format = (use_xml ? :xml : :json) Resource.connection.set_header('Authorization', "Bearer #{access_token}") @connection = Connection.new(self) end |
.record(path, parameters = {}) ⇒ Object
A convenience method for wrapping the result of a query in a Record object. This assumes that the result is a singleton, not a collection.
62 63 64 65 |
# File 'lib/basecamp/base.rb', line 62 def record(path, parameters={}) result = request(path, parameters) (result && !result.empty?) ? Record.new(result.keys.first, result.values.first) : nil end |
.records(node, path, parameters = {}) ⇒ Object
A convenience method for wrapping the result of a query in Record objects. This assumes that the result is a collection–any singleton result will be wrapped in an array.
70 71 72 73 74 75 |
# File 'lib/basecamp/base.rb', line 70 def records(node, path, parameters={}) result = request(path, parameters).values.first or return [] result = result[node] or return [] result = [result] unless Array === result result.map { |row| Record.new(node, row) } end |
.request(path, parameters = {}) ⇒ Object
Make a raw web-service request to Basecamp. This will return a Hash of Arrays of the response, and may seem a little odd to the uninitiated.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/basecamp/base.rb', line 42 def request(path, parameters = {}) headers = { "Content-Type" => content_type } headers.merge!('Authorization' => "Bearer #{@access_token}") if @use_oauth if parameters.empty? response = Basecamp.connection.get(path, headers) else response = Basecamp.connection.post(path, StringIO.new(convert_body(parameters)), headers) end if response.code.to_i / 100 == 2 return {} if response.body.blank? result = XmlSimple.xml_in(response.body, 'keeproot' => true, 'contentkey' => '__content__', 'forcecontent' => true) typecast_value(result) else raise "#{response.} (#{response.code})" end end |