Module: Boxr

Defined in:
lib/boxr.rb,
lib/boxr/auth.rb,
lib/boxr/files.rb,
lib/boxr/tasks.rb,
lib/boxr/users.rb,
lib/boxr/client.rb,
lib/boxr/errors.rb,
lib/boxr/events.rb,
lib/boxr/groups.rb,
lib/boxr/search.rb,
lib/boxr/folders.rb,
lib/boxr/version.rb,
lib/boxr/comments.rb,
lib/boxr/metadata.rb,
lib/boxr/collections.rb,
lib/boxr/shared_items.rb,
lib/boxr/collaborations.rb

Defined Under Namespace

Classes: BoxrError, Client

Constant Summary collapse

ROOT =

The root folder in Box is always identified by 0

0
BOX_CLIENT =

HTTPClient is high-performance, thread-safe, and supports persistent HTTPS connections bibwild.wordpress.com/2012/04/30/ruby-http-performance-shootout-redux/

HTTPClient.new
JWT_GRANT_TYPE =
"urn:ietf:params:oauth:grant-type:jwt-bearer"
VERSION =
"0.22.0"

Class Method Summary collapse

Class Method Details

.get_enterprise_token(private_key, enterprise_id = , client_id = ) ⇒ Object



27
28
29
# File 'lib/boxr/auth.rb', line 27

def self.get_enterprise_token(private_key, enterprise_id=ENV['BOX_ENTERPRISE_ID'], client_id=ENV['BOX_CLIENT_ID'])
  jwt_auth_post(private_key, client_id, enterprise_id, "enterprise")
end

.get_tokens(code = nil, grant_type: "authorization_code", assertion: nil, scope: nil, username: nil, client_id: , client_secret: ) ⇒ Object Also known as: get_token



16
17
18
19
20
21
22
23
24
25
# File 'lib/boxr/auth.rb', line 16

def self.get_tokens(code=nil, grant_type: "authorization_code", assertion: nil, scope: nil, username: nil, client_id: ENV['BOX_CLIENT_ID'], client_secret: ENV['BOX_CLIENT_SECRET'])
  uri = "https://api.box.com/oauth2/token"
  body = "grant_type=#{grant_type}&client_id=#{client_id}&client_secret=#{client_secret}"
  body = body + "&code=#{code}" unless code.nil?
  body = body + "&scope=#{scope}" unless scope.nil?
  body = body + "&username=#{username}" unless username.nil?
  body = body + "&assertion=#{assertion}" unless assertion.nil?

  auth_post(uri, body)
end

.get_user_token(private_key, user_id, client_id = ) ⇒ Object



31
32
33
# File 'lib/boxr/auth.rb', line 31

def self.get_user_token(private_key, user_id, client_id=ENV['BOX_CLIENT_ID'])
  jwt_auth_post(private_key, client_id, user_id, "user")
end

.oauth_url(state, host: "app.box.com", response_type: "code", scope: nil, folder_id: nil, client_id: ENV['BOX_CLIENT_ID']) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'lib/boxr/auth.rb', line 5

def self.oauth_url(state, host: "app.box.com", response_type: "code", scope: nil, folder_id: nil, client_id: ENV['BOX_CLIENT_ID'])
  template = Addressable::Template.new("https://{host}/api/oauth2/authorize{?query*}")

  query = {"response_type" => "#{response_type}", "state" => "#{state}", "client_id" => "#{client_id}"}
  query["scope"] = "#{scope}" unless scope.nil?
  query["folder_id"] = "#{folder_id}" unless folder_id.nil?
  
  uri = template.expand({"host" => "#{host}", "query" => query})
  uri
end

.refresh_tokens(refresh_token, client_id: , client_secret: ) ⇒ Object Also known as: refresh_token



35
36
37
38
39
40
# File 'lib/boxr/auth.rb', line 35

def self.refresh_tokens(refresh_token, client_id: ENV['BOX_CLIENT_ID'], client_secret: ENV['BOX_CLIENT_SECRET'])
  uri = "https://api.box.com/oauth2/token"
  body = "grant_type=refresh_token&refresh_token=#{refresh_token}&client_id=#{client_id}&client_secret=#{client_secret}"

  auth_post(uri, body)
end

.revoke_tokens(token, client_id: , client_secret: ) ⇒ Object Also known as: revoke_token



42
43
44
45
46
47
# File 'lib/boxr/auth.rb', line 42

def self.revoke_tokens(token, client_id: ENV['BOX_CLIENT_ID'], client_secret: ENV['BOX_CLIENT_SECRET'])
  uri = "https://api.box.com/oauth2/revoke"
  body = "client_id=#{client_id}&client_secret=#{client_secret}&token=#{token}"

  auth_post(uri, body)
end

.turn_off_debuggingObject



59
60
61
62
63
# File 'lib/boxr.rb', line 59

def self.turn_off_debugging
  BOX_CLIENT.debug_dev = nil
  BOX_CLIENT.transparent_gzip_decompression = true
  nil
end

.turn_on_debugging(device = STDOUT) ⇒ Object



53
54
55
56
57
# File 'lib/boxr.rb', line 53

def self.turn_on_debugging(device=STDOUT)
  BOX_CLIENT.debug_dev = device
  BOX_CLIENT.transparent_gzip_decompression = false
  nil
end