girlscout 0.1.4 → 0.2.0

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: 958a75006f6015148ddb609d2d3059b2cd7ae080
4
- data.tar.gz: eb0c4d45f0f38056164a6f9d059bab2342113a62
3
+ metadata.gz: 908538791e779495fcc45f18e34dcc94cb094ab9
4
+ data.tar.gz: 9d21eb3b17b3c419836421f552fb4f5017877ddf
5
5
  SHA512:
6
- metadata.gz: c59e9f12d5f7be1589c3dbdde8d723a734b44cef989ccbe805c81e120df3961017a0734f81c7060cc32a266fa2fd38792c16113e2aa87708074a78412dc06ccc
7
- data.tar.gz: 937cca1325a2288b80fb38409818b004b00c502b2e0203f2f2083d628621e81823e08ac197d80e4bcee4610fb1f4c4c36e037399b139f2faf7087e04281b70c3
6
+ metadata.gz: 8911698baafd657e9e7ece46f5b6804d31857e63a567b789c5cf267ed079ade70288a5baab62c2130523ff0d2404e82afd775527d0d4d50fabb0f2f88d5601c8
7
+ data.tar.gz: e28ae6a0cd9053c8481ee283b0fe5a9e64fbbd7a1c8106ca59bb6bc79d370b2f13122877dcc51588700d3b2d2d87ecb3711ca48700622d5e3a4155322d8000a0
@@ -1,4 +1,4 @@
1
- require 'rest-client'
1
+ require 'excon'
2
2
 
3
3
  require 'girlscout/resource'
4
4
  require 'girlscout/config'
@@ -4,13 +4,18 @@ module GirlScout
4
4
  attr_writer :resource
5
5
 
6
6
  def self.included(klass)
7
- klass.extend self
7
+ klass.extend(self)
8
8
  end
9
9
 
10
10
  def resource
11
11
  @resource ||= build_resource
12
12
  end
13
13
 
14
+ def resource_path
15
+ return self.class.resource_path if self.class.respond_to?(:resource_path)
16
+ @path
17
+ end
18
+
14
19
  def resource_url
15
20
  "#{GirlScout::Config.api_prefix}#{@path}"
16
21
  end
@@ -22,13 +27,8 @@ module GirlScout
22
27
  private
23
28
 
24
29
  def build_resource
25
- klass = self.class
26
- return klass.resource if klass.respond_to?(:resource)
27
-
28
- Resource.new(resource_url, {
29
- user: Config.api_key,
30
- password: 'X'
31
- })
30
+ return self.class.resource if self.class.respond_to?(:resource)
31
+ Resource.new(url: resource_url)
32
32
  end
33
33
  end
34
34
  end
@@ -10,7 +10,7 @@ module GirlScout
10
10
  def create(attributes)
11
11
  attributes = attributes.as_json if attributes.respond_to?(:as_json)
12
12
  attributes["reload"] ||= true
13
- Conversation.new(resource.post(attributes)["item"])
13
+ Conversation.new(resource.post(payload: attributes)["item"])
14
14
  end
15
15
  end
16
16
 
@@ -11,7 +11,7 @@ module GirlScout
11
11
  end
12
12
 
13
13
  @attributes = attr
14
- @resource = options[:resource] if options[:resource]
14
+ @resource = options[:resource] if options[:resource]
15
15
  end
16
16
  end
17
17
  end
@@ -2,41 +2,55 @@ require 'json'
2
2
 
3
3
  module GirlScout
4
4
  class Resource
5
- def initialize(url="", options={})
6
- @url = url
7
- @options = options
8
- end
9
-
10
- def rest_resource
11
- return @rest_resource if @rest_resource
12
- return @rest_resource = @options[:rest_resource] if @options[:rest_resource]
5
+ METHODS = [:get, :put, :post, :patch, :delete]
13
6
 
14
- resource_class = @options[:resource_class] || RestClient::Resource
15
- @rest_resource = resource_class.new("#{@url}.json", @options)
7
+ def initialize(url: "")
8
+ @url = url
16
9
  end
17
10
 
18
11
  def url
19
- rest_resource.url
12
+ "#{@url}.json"
20
13
  end
21
14
 
22
15
  def [](path)
23
- Resource.new("#{@url}#{path}", @options)
16
+ Resource.new(url: "#{@url}#{path}")
24
17
  end
25
18
 
26
- def get(query=nil)
27
- opts = { }
28
- opts[:headers] = { params: query } if query
19
+ METHODS.each do |method|
20
+ define_method(method) do |payload: nil, query: nil, &block|
21
+ options = { method: method }
22
+ if payload
23
+ options[:body] = JSON.generate(payload)
24
+ options[:headers] ||= {}
25
+ options[:headers]["Content-Type"] = "application/json"
26
+ end
27
+ if query
28
+ options[:query] = query
29
+ end
29
30
 
30
- parse(rest_resource.get(opts))
31
+ request(options)
32
+ end
31
33
  end
32
34
 
33
- [:put, :post, :patch, :delete].each do |method|
34
- define_method(method.to_s) do |payload=nil|
35
- payload = serialize(payload) if payload
36
- parse(rest_resource.send(method, payload, content_type: :json))
37
- end
35
+ def request(options={})
36
+ auth = { user: Config.api_key, password: 'X' }
37
+ JSON.parse(Excon.new(url, auth).request(options).body)
38
38
  end
39
39
 
40
+ # def get(query=nil)
41
+ # opts = { }
42
+ # opts[:headers] = { params: query } if query
43
+
44
+ # parse(rest_resource.get(opts))
45
+ # end
46
+
47
+ # [:put, :post, :patch, :delete].each do |method|
48
+ # define_method(method.to_s) do |payload=nil|
49
+ # payload = serialize(payload) if payload
50
+ # parse(rest_resource.send(method, payload, content_type: :json))
51
+ # end
52
+ # end
53
+
40
54
  private
41
55
 
42
56
  def parse(response)
@@ -46,5 +60,8 @@ module GirlScout
46
60
  def serialize(payload)
47
61
  payload.to_json
48
62
  end
63
+
64
+ def call
65
+ end
49
66
  end
50
67
  end
@@ -4,11 +4,18 @@ module GirlScout
4
4
 
5
5
  class << self
6
6
  def conversations(query)
7
- List.new(resource['/conversations'].get(query: query), Conversation)
7
+ search(Conversation, query)
8
8
  end
9
9
 
10
10
  def customers(query)
11
- List.new(resource['/customers'].get(query: query), Customer)
11
+ search(Customer, query)
12
+ end
13
+
14
+ private
15
+
16
+ def search(klass, query)
17
+ result = resource[klass.resource_path].get(query: { query: query })
18
+ List.new(result, klass)
12
19
  end
13
20
  end
14
21
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: girlscout
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chakrit Wichian
@@ -11,19 +11,33 @@ cert_chain: []
11
11
  date: 2015-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rest-client
14
+ name: excon
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.8'
19
+ version: '0.49'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.8'
26
+ version: '0.49'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.9'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.9'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: json
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -39,103 +53,103 @@ dependencies:
39
53
  - !ruby/object:Gem::Version
40
54
  version: '1.8'
41
55
  - !ruby/object:Gem::Dependency
42
- name: rake
56
+ name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '10.4'
61
+ version: '1.12'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '10.4'
68
+ version: '1.12'
55
69
  - !ruby/object:Gem::Dependency
56
- name: pry
70
+ name: guard
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '0.10'
75
+ version: '2.13'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '0.10'
82
+ version: '2.13'
69
83
  - !ruby/object:Gem::Dependency
70
- name: webmock
84
+ name: guard-minitest
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '1.22'
89
+ version: '2.4'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '1.22'
96
+ version: '2.4'
83
97
  - !ruby/object:Gem::Dependency
84
- name: bundler
98
+ name: minitest
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '1.12'
103
+ version: '5.8'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '1.12'
110
+ version: '5.8'
97
111
  - !ruby/object:Gem::Dependency
98
- name: minitest
112
+ name: pry
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: '5.8'
117
+ version: '0.10'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: '5.8'
124
+ version: '0.10'
111
125
  - !ruby/object:Gem::Dependency
112
- name: guard
126
+ name: rake
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: '2.13'
131
+ version: '11.1'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '2.13'
138
+ version: '11.1'
125
139
  - !ruby/object:Gem::Dependency
126
- name: guard-minitest
140
+ name: vcr
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
143
  - - "~>"
130
144
  - !ruby/object:Gem::Version
131
- version: '2.4'
145
+ version: '3.0'
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
150
  - - "~>"
137
151
  - !ruby/object:Gem::Version
138
- version: '2.4'
152
+ version: '3.0'
139
153
  description: Provides integration with HelpScout REST API.
140
154
  email: chakrit@omise.co
141
155
  executables: []