girlscout 0.1.4 → 0.2.0

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 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: []