attask 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +83 -0
- data/lib/attask/client.rb +17 -4
- data/lib/attask/request.rb +3 -5
- data/lib/attask/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e3a1d68670cb5fd2f28639ab038293367eaed6a
|
4
|
+
data.tar.gz: a509263ae912cd9d9f438690926c0ba37f37ffab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 288900f25fad2c60ab3fc48e6adc52c18da16738b0eb8c4f1563a690ba5bdd5a5f4616456921ef97024cae4988af3d6cadc42879a065d12d343003950700f2b1
|
7
|
+
data.tar.gz: 44911bb28f9f867c30e75960853d5f5ac99f158fdae1533505ceae2bb1a4ac9e950a89bfd5a3c8435ce000eccaab2d639ce9826221e5d1568fde74da8bafa5ca
|
data/README.md
CHANGED
@@ -0,0 +1,83 @@
|
|
1
|
+
# Attask
|
2
|
+
|
3
|
+
A classe Attask::Client é a interface HTTP da Attask onde é possível fazer as requisições encontradas na [https://developers.workfront.com/api-docs/#Actions](documentação).
|
4
|
+
|
5
|
+
## Como usar
|
6
|
+
|
7
|
+
Configure os dados de acesso
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
# Exemplo:
|
11
|
+
Attask.configure do |config|
|
12
|
+
config.username = ENV['ATTASK_USERNAME']
|
13
|
+
config.password = ENV['ATTASK_PASSWORD']
|
14
|
+
end
|
15
|
+
```
|
16
|
+
|
17
|
+
### Queries
|
18
|
+
|
19
|
+
**Queries aceitas:** `eq`, `ne`, `gte`, `lte`, `isnull`, `notnull` e `contains`.
|
20
|
+
|
21
|
+
Exemplo de uma query usando between:
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
require_relative 'lib/attask/client.rb'
|
25
|
+
|
26
|
+
# Setando o objeto que quero` buscar
|
27
|
+
object = 'TASK'
|
28
|
+
|
29
|
+
# Montando a query
|
30
|
+
query = {
|
31
|
+
'plannedCompletionDate' => '$$TODAY-7',
|
32
|
+
'plannedCompletionDate_Range' => '$$TODAY',
|
33
|
+
'plannedCompletionDate_Mod' => 'between'
|
34
|
+
}
|
35
|
+
|
36
|
+
client = Attask::Client.new({ timeout: 120 })
|
37
|
+
client.search(object, query)
|
38
|
+
```
|
39
|
+
|
40
|
+
### Fields
|
41
|
+
|
42
|
+
Para cada Objeto, existem uma quantidade de campos (`fields`) que você pode obter a partir dele em seu retorno. Para saber os campos que cada objeto, entre neste [https://developers.workfront.com/api-docs/api-explorer/](link). Lembrando que atualmente utilizamos a versão 6.0 da API da attask.
|
43
|
+
|
44
|
+
Exemplo utilizando o objeto `DOCU`, solicitando o campo `downloadURL`:
|
45
|
+
|
46
|
+
```ruby
|
47
|
+
require_relative 'lib/attask/client.rb'
|
48
|
+
# Setando o objeto que quero buscar
|
49
|
+
object = 'DOCU'
|
50
|
+
|
51
|
+
# definindo os campos que eu quero que retorne
|
52
|
+
fields = ['downloadURL']
|
53
|
+
|
54
|
+
client = Attask::Client.new({ timeout: 120 })
|
55
|
+
client.search(object, { '$$LIMIT' => 2000 }, fields)
|
56
|
+
```
|
57
|
+
|
58
|
+
## Upload de arquivos
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
require_relative 'lib/attask/client.rb'
|
62
|
+
client = Attask::Client.new
|
63
|
+
|
64
|
+
filename = 'teste.txt'
|
65
|
+
description = 'descricao'
|
66
|
+
object_code = 'TASK'
|
67
|
+
object_id = '586ab38f001b36bfbb586053760aec3d'
|
68
|
+
|
69
|
+
# Crie um handle
|
70
|
+
handle = client.handle("./#{filename}", 'text/plain')
|
71
|
+
|
72
|
+
# Com o handle em mãos, faca a requisição para envio de um documento
|
73
|
+
|
74
|
+
params = {
|
75
|
+
description: description,
|
76
|
+
docObjCode: object_code,
|
77
|
+
objID: object_id,
|
78
|
+
handle: handle,
|
79
|
+
name: filename
|
80
|
+
}.to_json
|
81
|
+
|
82
|
+
client.upload(params)
|
83
|
+
```
|
data/lib/attask/client.rb
CHANGED
@@ -4,10 +4,10 @@
|
|
4
4
|
module Attask
|
5
5
|
# lib/attask/client.rb
|
6
6
|
class Client
|
7
|
-
|
8
|
-
|
9
|
-
def initialize(opts = {})
|
7
|
+
def initialize(app, opts = {})
|
8
|
+
@app = app
|
10
9
|
@opts = opts
|
10
|
+
@endpoint = "https://#{app}.attask-ondemand.com/attask/api/v6.0"
|
11
11
|
@session_id = session_id
|
12
12
|
end
|
13
13
|
|
@@ -60,10 +60,19 @@ module Attask
|
|
60
60
|
request(:post, path)
|
61
61
|
end
|
62
62
|
|
63
|
+
def download(download_url, filename, save_to)
|
64
|
+
params = @session_id
|
65
|
+
s_id = @session_id['sessionID']
|
66
|
+
path =
|
67
|
+
"https://#{@app}.attask-ondemand.com/#{download_url}&sessionID=#{s_id}"
|
68
|
+
response = request(:get, path)
|
69
|
+
save_file(filename, response)
|
70
|
+
end
|
71
|
+
|
63
72
|
private
|
64
73
|
|
65
74
|
def mount_path(object_code, object_id = '')
|
66
|
-
"#{
|
75
|
+
"#{@endpoint}/#{object_code}#{object_id}"
|
67
76
|
end
|
68
77
|
|
69
78
|
def session_id
|
@@ -83,6 +92,10 @@ module Attask
|
|
83
92
|
end
|
84
93
|
end
|
85
94
|
|
95
|
+
def save_file(filename, file)
|
96
|
+
File.open(filename, 'wb') { |f| f.write(file) }
|
97
|
+
end
|
98
|
+
|
86
99
|
def request(method, path, params = {}, headers = {})
|
87
100
|
Request.new(path, @opts).send(method, '', params, headers).body
|
88
101
|
end
|
data/lib/attask/request.rb
CHANGED
@@ -35,11 +35,9 @@ module Attask
|
|
35
35
|
|
36
36
|
def make_request(method, path, params = {}, headers = {})
|
37
37
|
response = @conn.send(method, path, params, headers)
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
Response.new(response.body)
|
42
|
-
end
|
38
|
+
body = response.body
|
39
|
+
return Response.new(body) if response.headers['Content-Type'].nil?
|
40
|
+
Response.new(Oj.load(body))
|
43
41
|
end
|
44
42
|
end
|
45
43
|
end
|
data/lib/attask/version.rb
CHANGED