paw_client 0.0.2 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 59a277531b3bba6cf3141155edd7294d64d1cf5d
4
- data.tar.gz: be130de5fc365d3b458a2ea02c08ebc8e7d4ff50
3
+ metadata.gz: 2b8fe038780290db7280799dc8c0bf2c68b9a0ec
4
+ data.tar.gz: 19663cded5a18acac8bfc65fc7fad4c810a90b67
5
5
  SHA512:
6
- metadata.gz: ecac9efe22bcc698bee34fcd67ac6ec2cb798b3ad3a7c8674446b102b24acbcef3cc17fd2aa7d57f332331da4496cbce461bdb4a22315628a45fe2d58e8a0c3d
7
- data.tar.gz: 73d24408b8a6338213c62a70c912bfd2e879969ce014b84adcd8762a616f5b5a2b77a0630ebc92020a484bf6f14cc5d5d221bba694a4eca3434cb0b0d9245c55
6
+ metadata.gz: cf05c867cbdd0a3adf3b9f5f8898f6ab87ba02cdeed012a5b37ff24f0456d37e00a2a739d5cf443ad99c861320a32f5d9edf2c2db26384f6518d6a200f564cd7
7
+ data.tar.gz: ee16b8a934bec95d3b555de74745ad131b446869abb27c5c0ed64caa4b15015b840c5cb22b30b21c88e7a316c71c4c2a10bdba893be085c66116cdbc956fd8e9
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in paw_client.gemspec
4
+ gemspec
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "paw_client"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+
11
+ config_path=File.expand_path("../../config.yml", __FILE__)
12
+ if File.exists?(config_path)
13
+ PawClient.config=PawClient::Configuration.from_yaml(config_path)
14
+ end
15
+
16
+ #
17
+ require "pry"
18
+ Pry.start
19
+ # require "irb"
20
+ # IRB.start(__FILE__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,22 @@
1
+ require "paw_client/version"
2
+ require "paw_client/configuration"
3
+ require "paw_client/client"
4
+
5
+ module PawClient
6
+
7
+ def self.config(reload=false)
8
+ if !@config||reload
9
+ @config=Configuration.new
10
+ end
11
+ @config
12
+ end
13
+
14
+ def self.config=(value)
15
+ @config=value
16
+ end
17
+
18
+ def self.configure(reload=false)
19
+ yield(config(reload))
20
+ end
21
+
22
+ end
@@ -0,0 +1,162 @@
1
+ require 'rest-client'
2
+ require 'base64'
3
+ require 'nokogiri'
4
+ require 'json'
5
+
6
+ class PawClient::Client
7
+
8
+ class ClientError < StandardError
9
+ attr_reader :response
10
+
11
+ def initialize(response)
12
+ super(message)
13
+ @response = response
14
+ message=to_json.success rescue 'Error while call plugandwork API, Unparsable response'
15
+ super(message)
16
+ end
17
+
18
+ def info
19
+ to_json.info
20
+ end
21
+
22
+ def to_json
23
+ JSON.parse(self.response.to_s)
24
+ end
25
+
26
+ def request
27
+ self.response.request
28
+ end
29
+ end
30
+
31
+
32
+ attr_accessor :base_url
33
+ attr_accessor :uuid
34
+ attr_accessor :token
35
+ attr_accessor :user_token
36
+ attr_accessor :logger
37
+
38
+ def initialize(attrs={})
39
+ @base_url = attrs.fetch(:base_url, PawClient.config.base_url)
40
+ @uuid = attrs.fetch(:uuid, PawClient.config.uuid)
41
+ @token = attrs.fetch(:token, PawClient.config.token)
42
+ @user_token = attrs.fetch(:token, PawClient.config.user_token)
43
+ @logger = attrs.fetch(:logger, PawClient.config.logger)
44
+ end
45
+
46
+ def endpoint_for(path)
47
+ base_resource[path]
48
+ end
49
+
50
+ def get(path, params={})
51
+ begin
52
+ r=endpoint_for(path).get(params: params)
53
+ JSON.parse(r.body.to_s)
54
+ rescue RestClient::ExceptionWithResponse => err
55
+ raise ClientError.new(err.response)
56
+ end
57
+ end
58
+
59
+ def post(path, payload, params={})
60
+ begin
61
+ r=endpoint_for(path).post(payload,params)
62
+ JSON.parse(r.body.to_s)
63
+ rescue RestClient::ExceptionWithResponse => err
64
+ raise ClientError.new(err.response)
65
+ end
66
+ end
67
+
68
+
69
+ def patch(path, payload, params={})
70
+ begin
71
+ r=endpoint_for(path).patch(payload,params)
72
+ JSON.parse(r.body.to_s)
73
+ rescue RestClient::ExceptionWithResponse => err
74
+ raise ClientError.new(err.response)
75
+ end
76
+ end
77
+
78
+ def put(path, payload, params={})
79
+ begin
80
+ r=endpoint_for(path).put(payload,params)
81
+ JSON.parse(r.body.to_s)
82
+ rescue RestClient::ExceptionWithResponse => err
83
+ raise ClientError.new(err.response)
84
+ end
85
+ end
86
+
87
+ def delete(path, params={})
88
+ begin
89
+ r=endpoint_for(path).delete(params)
90
+ JSON.parse(r.to_s)
91
+ rescue RestClient::ExceptionWithResponse => err
92
+ raise ClientError.new(err.response)
93
+ end
94
+ end
95
+
96
+ def create_space(params = {})
97
+ j = {}
98
+ j['space']=params
99
+ res = post('spaces', j)
100
+ return res
101
+ end
102
+
103
+ def update_space(id, params = {}, patch = true)
104
+ j = {}
105
+ j['space']=params
106
+ if patch
107
+ res = patch('spaces/'+id, j)
108
+ else
109
+ res = put('spaces/'+id, j)
110
+ end
111
+
112
+ return res
113
+ end
114
+
115
+ def delete_space(id)
116
+ delete('spaces/'+id )
117
+ end
118
+
119
+ def create_doc(filepath = nil,params = {})
120
+ j = {}
121
+ j['doc']=params
122
+ j['doc']['title']||=File.basename(filepath) if filepath
123
+ res = post('docs', j)
124
+ if res && res['id'] && filepath
125
+ res = upload_file(filepath, 'id' => res['id'])
126
+ end
127
+ return res
128
+ end
129
+
130
+ def delete_doc(id)
131
+ delete('docs/'+id )
132
+ end
133
+
134
+ def upload_file(localpath, params={})
135
+ begin
136
+ request = RestClient::Request.new(
137
+ :method => :post,
138
+ :url => @base_url + "/api/d1/docs/#{params['id']}/file",
139
+ :payload => {
140
+ :multipart => true,
141
+ :file => File.new(localpath, 'rb')
142
+ },
143
+ :headers => {'Accept' => 'application/json', 'Authorization': "Bearer #{@user_token}"}
144
+ )
145
+ r = request.execute
146
+ #RestClient::Resource.new(@base_url + '/api/d1/', headers: {'Authorization': "Bearer #{@user_token}"}, lo
147
+ JSON.parse(r.to_s)
148
+ rescue RestClient::ExceptionWithResponse => err
149
+ raise ClientError.new(err.response)
150
+ end
151
+ end
152
+
153
+ def base_resource(reload=false)
154
+ if !@base_resource || reload
155
+ @base_resource=RestClient::Resource.new(@base_url + '/api/d1/', headers: {'Authorization': "Bearer #{@user_token}"}, log: self.logger)
156
+ end
157
+ @base_resource
158
+ end
159
+
160
+ end
161
+
162
+
@@ -0,0 +1,43 @@
1
+ require 'yaml'
2
+ class PawClient::Configuration
3
+
4
+ attr_accessor :base_url
5
+ attr_accessor :uuid
6
+ attr_accessor :token
7
+ attr_accessor :user_token
8
+ attr_accessor :test_mode
9
+ attr_accessor :logger
10
+
11
+ def logger=(value)
12
+ @logger=case value
13
+ when String
14
+ case value.downcase
15
+ when 'stdout'
16
+ Logger.new(STDOUT)
17
+ when 'stderr'
18
+ Logger.new(STDERR)
19
+ else
20
+ nil
21
+ end
22
+ else
23
+ value
24
+ end
25
+ end
26
+
27
+ def initialize(attrs={})
28
+ self.base_url = attrs.fetch(:base_url, nil)
29
+ self.uuid = attrs.fetch(:uuid, nil)
30
+ self.token = attrs.fetch(:token, nil)
31
+ self.user_token = attrs.fetch(:user_token, nil)
32
+ self.logger = attrs.fetch(:logger, nil)
33
+ self.test_mode = attrs.fetch(:test_mode, false)
34
+ end
35
+
36
+ def self.from_yaml(path, env=nil)
37
+ attrs = YAML.load_file(path)
38
+ attrs = attrs[env] if env
39
+ sym_attrs=attrs.each_with_object({}) {|(k, v), memo| memo[k.to_sym] = v}
40
+ self.new(sym_attrs)
41
+ end
42
+
43
+ end
@@ -0,0 +1,3 @@
1
+ module PawClient
2
+ VERSION = "0.0.7"
3
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paw_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Olivier DIRRENBERGER
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-03-16 00:00:00.000000000 Z
11
+ date: 2018-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -114,7 +114,14 @@ email:
114
114
  executables: []
115
115
  extensions: []
116
116
  extra_rdoc_files: []
117
- files: []
117
+ files:
118
+ - Gemfile
119
+ - bin/console
120
+ - bin/setup
121
+ - lib/paw_client.rb
122
+ - lib/paw_client/client.rb
123
+ - lib/paw_client/configuration.rb
124
+ - lib/paw_client/version.rb
118
125
  homepage: https://code.plugandwork.net/plugandwork/paw_client
119
126
  licenses:
120
127
  - MIT