Module: Basecampx

Defined in:
lib/basecampx/resources/document.rb,
lib/basecampx/base.rb,
lib/basecampx/version.rb,
lib/basecampx/resource.rb,
lib/basecampx/relations.rb,
lib/basecampx/resources/todo.rb,
lib/basecampx/resources/event.rb,
lib/basecampx/resources/topic.rb,
lib/basecampx/resources/person.rb,
lib/basecampx/resources/comment.rb,
lib/basecampx/resources/message.rb,
lib/basecampx/resources/project.rb,
lib/basecampx/resources/calendar.rb,
lib/basecampx/resources/todo_list.rb,
lib/basecampx/resources/attachment.rb,
lib/generators/basecampx/install/install_generator.rb

Overview

Defined Under Namespace

Modules: Generators, Relations Classes: Attachment, Calendar, Comment, Document, Event, Message, Person, Project, Resource, Todo, TodoList, Topic

Constant Summary collapse

VERSION =
"0.0.4"

Class Method Summary collapse

Class Method Details

.account_endpointObject



21
22
23
24
25
26
27
# File 'lib/basecampx/base.rb', line 21

def 
  if @project.nil?
    self.use!
  end

  "https://basecamp.com/#{@connect_details['project_id']}/api/v#{@connect_details['api_version'] || 1}"
end

.delete(url, params = {}) ⇒ Object



62
63
64
65
# File 'lib/basecampx/base.rb', line 62

def delete url, params={}
  params[:method] = :delete
  request url, params
end

.get(url, params = {}) ⇒ Object



47
48
49
50
# File 'lib/basecampx/base.rb', line 47

def get url, params={}
  params[:method] = :get
  request url, params
end

.handle(response) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/basecampx/base.rb', line 29

def handle response
  if response.code == 200
    JSON.parse(response.body)
  elsif response.code == 204
    true
  elsif response.code == 404
    raise Exception, "API can't find specified URL #{response.request.path}"
  else
    raise Exception, response
  end
end

.post(url, params = {}) ⇒ Object



57
58
59
60
# File 'lib/basecampx/base.rb', line 57

def post url, params={}
  params[:method] = :post
  request url, params
end

.put(url, params = {}) ⇒ Object



52
53
54
55
# File 'lib/basecampx/base.rb', line 52

def put url, params={}
  params[:method] = :put
  request url, params
end

.request(url, params = {}) ⇒ Object



41
42
43
44
45
# File 'lib/basecampx/base.rb', line 41

def request url, params={}
  url = url.sub /https\:\/\/basecamp\.com\/\d*\/api\/v1/, ''

  handle HTTParty.send(params[:method] || :get, "#{}/#{url.sub(/^\//, '')}", request_credentials )
end

.use!(project = :default) ⇒ Object



3
4
5
6
7
# File 'lib/basecampx/base.rb', line 3

def use! project=:default
  @project = project
  details = YAML.load(File.read(File.join(Rails.root, 'config', 'basecampx.yaml')))
  @connect_details = details[project.to_s]
end

.use_custom!(username, password, project_id, api_version = 1) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/basecampx/base.rb', line 9

def use_custom! username, password, project_id, api_version=1
  @project = :custom
  @connect_details = {
    'project_id' => project_id,
    'username' => username,
    'password' => password,
    'api_version' => api_version
  }
end