attask 0.0.1 → 0.0.2
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 +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