hawatel_search_jobs 0.1.1 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c9f7de2e3ff270be2dc6123227b65cfa7fd2d343
4
- data.tar.gz: f5c5cc682a15054b63790a52dc7883d4fefd91b3
3
+ metadata.gz: ce6474baef143b6eaa54ac371112dab7ef8ce806
4
+ data.tar.gz: b864e60e6652303546159feb83d66052222426d5
5
5
  SHA512:
6
- metadata.gz: e54c9a1cc814adf2684b04d96d1c80926edbf640d58a69d58e77c8108182300aba877dffd59c2c09370d871f614f9c317819f05052a5a1c3b3b435b9d54735b3
7
- data.tar.gz: 8fa35df191e0a6959a829e147dc8c86d44104bab8d49299ab82559db0b6257233326828b9f081810a2df2f893b7a438f6c2b76be60916597ebdbbdd3511038f6
6
+ metadata.gz: dc01a1ac8a947f4a169dc1e5f41978aeab8d4800bfe31f6ce837da7a3cd0b855534de5e84bc99247d6edd619e8d0d223b1dafc11b650343f5a080c6c39fd8b4e
7
+ data.tar.gz: 255d9e307e8cbffa499627de00bffe7ee586e0110b07c17724e71b65543fd6fb1573a3e6acb402a4e1c5e1cae122b94563fb8d9a7335d7278702c35e4b0cf825
@@ -1,121 +1,121 @@
1
- require 'xing_api'
2
-
3
- module HawatelSearchJobs::Api
4
- module Xing
5
- class << self
6
- include HawatelSearchJobs::Helpers::Base
7
-
8
- DEFAULT = {
9
- :keywords => '',
10
- :location => '',
11
- :company => ''
12
- }
13
-
14
- # @see https://github.com/xing/xing_api
15
- # Search jobs based on specified keywords
16
- #
17
- # @param args [Hash]
18
- # @option args :query [Hash] search criteria
19
- # - *:keywords* (String )
20
- # @option args :setting [Hash] @see https://dev.xing.com/docs/authentication
21
- # - *:consumer_key* (String) - consumer key, required for authentication
22
- # - *:consumer_secret* (String) - consumer secret, required for authentication
23
- # - *:oauth_token* (String) - outh toker, required for authentication
24
- # - *:oauth_token_secret* (String) - outh token secret, required for authentication
25
- #
26
- # @example
27
- # search(:settings => HawatelSearchJobs.xing,:query => {:keywords => 'ruby'})
28
- #
29
- # @return [Hash<OpenStruct>]
30
- def search(args)
31
- args[:query] = DEFAULT.merge(args[:query]) if args[:query]
32
- keywords = args[:query][:keywords]
33
- result = send_request({:keywords => keywords, :offset => 0, :settings => args[:settings]})
34
- if !result[:code]
35
- set_attributes({:result => result, :page => 0, :keywords => keywords})
36
- else
37
- OpenStruct.new({:code => 501, :msg => 'incorrect settings'})
38
- end
39
- end
40
-
41
- # Show next page of results
42
- #
43
- # @param args [Hash]
44
- # @option page [Integer] page numer (default 0)
45
- # @option query_key [String] keywords from last query
46
- #
47
- # @example
48
- # page({:query_key => result.key, :page => 2}
49
- #
50
- # @return [Hash<OpenStruct>]
51
- def page(args)
52
- args[:page] = 0 if args[:page].nil?
53
- result = XingApi::Job.search(args[:query_key], {:limit => 25, :offset => args[:page]*25})
54
- set_attributes({:result => result, :page => args[:page], :keywords => args[:query_key]})
55
- rescue XingApi::Error => e
56
- {:code => e.status_code, :msg => e.text}
57
- end
58
-
59
- private
60
- # Call Xing client request
61
- #
62
- # @param args [Hash]
63
- # @option settings [Hash] authentication attributes
64
- # @option keywords [String] keywords for query
65
- #
66
- # @return [Hash<OpenStruct>]
67
- def send_request(args)
68
- set_settings(args[:settings])
69
- XingApi::Job.search(args[:keywords], {:limit => 25, :offset => 0})
70
- rescue XingApi::Error => e
71
- {:code => e.status_code, :msg => e.text}
72
- end
73
-
74
- # Build final result - set required attributes and return openstruct object
75
- #
76
- def set_attributes(args)
77
- attributes = Hash.new
78
- attributes[:totalResults] = args[:result][:jobs][:total]
79
- attributes[:code] = '200'
80
- attributes[:msg] = "OK"
81
- attributes[:page] = args[:page]
82
- attributes[:last] = args[:result][:jobs][:total] / 25
83
- attributes[:key] = args[:keywords]
84
- attributes[:jobs] = parse_raw_data(args[:result])
85
- OpenStruct.new(attributes)
86
- end
87
-
88
- # Build jobs array with specified attributes
89
- #
90
- # @return [Array<OpenStruct>]
91
- def parse_raw_data(result)
92
- jobs = Array.new
93
- return jobs if result['jobs'].to_s.empty?
94
- result[:jobs][:items].each do |offer|
95
- job = Hash.new
96
- job[:jobtitle] = offer[:title]
97
- job[:location] = "#{offer[:location][:country]}, #{offer[:location][:city]}"
98
- job[:company] = offer[:company][:name]
99
- job[:date] = convert_date_to_format(offer[:published_at], '%d/%m/%y')
100
- job[:url] = offer[:links][:xing]
101
- job = convert_empty_to_nil(job)
102
- jobs << OpenStruct.new(job)
103
- end
104
- return jobs
105
- end
106
-
107
- # Set settings for XingApi client
108
- #
109
- # @param args [Hash]
110
- def set_settings(args)
111
- XingApi::Client.configure do |config|
112
- config.consumer_key = args[:consumer_key]
113
- config.consumer_secret = args[:consumer_secret]
114
- config.oauth_token = args[:oauth_token]
115
- config.oauth_token_secret = args[:oauth_token_secret]
116
- end
117
- end
118
-
119
- end
120
- end
121
- end
1
+ require 'xing_api'
2
+
3
+ module HawatelSearchJobs::Api
4
+ module Xing
5
+ class << self
6
+ include HawatelSearchJobs::Helpers::Base
7
+
8
+ DEFAULT = {
9
+ :keywords => '',
10
+ :location => '',
11
+ :company => ''
12
+ }
13
+
14
+ # @see https://github.com/xing/xing_api
15
+ # Search jobs based on specified keywords
16
+ #
17
+ # @param args [Hash]
18
+ # @option args :query [Hash] search criteria
19
+ # - *:keywords* (String )
20
+ # @option args :setting [Hash] @see https://dev.xing.com/docs/authentication
21
+ # - *:consumer_key* (String) - consumer key, required for authentication
22
+ # - *:consumer_secret* (String) - consumer secret, required for authentication
23
+ # - *:oauth_token* (String) - outh toker, required for authentication
24
+ # - *:oauth_token_secret* (String) - outh token secret, required for authentication
25
+ #
26
+ # @example
27
+ # search(:settings => HawatelSearchJobs.xing,:query => {:keywords => 'ruby'})
28
+ #
29
+ # @return [Hash<OpenStruct>]
30
+ def search(args)
31
+ args[:query] = DEFAULT.merge(args[:query]) if args[:query]
32
+ keywords = args[:query][:keywords]
33
+ result = send_request({:keywords => keywords, :offset => 0, :settings => args[:settings]})
34
+ if !result[:code]
35
+ set_attributes({:result => result, :page => 0, :keywords => keywords})
36
+ else
37
+ OpenStruct.new({:code => 501, :msg => 'incorrect settings'})
38
+ end
39
+ end
40
+
41
+ # Show next page of results
42
+ #
43
+ # @param args [Hash]
44
+ # @option page [Integer] page numer (default 0)
45
+ # @option query_key [String] keywords from last query
46
+ #
47
+ # @example
48
+ # page({:query_key => result.key, :page => 2}
49
+ #
50
+ # @return [Hash<OpenStruct>]
51
+ def page(args)
52
+ args[:page] = 0 if args[:page].nil?
53
+ result = XingApi::Job.search(args[:query_key], {:limit => 25, :offset => args[:page]*25})
54
+ set_attributes({:result => result, :page => args[:page], :keywords => args[:query_key]})
55
+ rescue XingApi::Error => e
56
+ {:code => e.status_code, :msg => e.text}
57
+ end
58
+
59
+ private
60
+ # Call Xing client request
61
+ #
62
+ # @param args [Hash]
63
+ # @option settings [Hash] authentication attributes
64
+ # @option keywords [String] keywords for query
65
+ #
66
+ # @return [Hash<OpenStruct>]
67
+ def send_request(args)
68
+ set_settings(args[:settings])
69
+ XingApi::Job.search(args[:keywords], {:limit => 25, :offset => 0})
70
+ rescue XingApi::Error => e
71
+ {:code => e.status_code, :msg => e.text}
72
+ end
73
+
74
+ # Build final result - set required attributes and return openstruct object
75
+ #
76
+ def set_attributes(args)
77
+ attributes = Hash.new
78
+ attributes[:totalResults] = args[:result][:jobs][:total]
79
+ attributes[:code] = '200'
80
+ attributes[:msg] = "OK"
81
+ attributes[:page] = args[:page]
82
+ attributes[:last] = args[:result][:jobs][:total] / 25
83
+ attributes[:key] = args[:keywords]
84
+ attributes[:jobs] = parse_raw_data(args[:result])
85
+ OpenStruct.new(attributes)
86
+ end
87
+
88
+ # Build jobs array with specified attributes
89
+ #
90
+ # @return [Array<OpenStruct>]
91
+ def parse_raw_data(result)
92
+ jobs = Array.new
93
+ return jobs if result[:jobs].to_s.empty?
94
+ result[:jobs][:items].each do |offer|
95
+ job = Hash.new
96
+ job[:jobtitle] = offer[:title]
97
+ job[:location] = "#{offer[:location][:country]}, #{offer[:location][:city]}"
98
+ job[:company] = offer[:company][:name]
99
+ job[:date] = convert_date_to_format(offer[:published_at], '%d/%m/%y')
100
+ job[:url] = offer[:links][:xing]
101
+ job = convert_empty_to_nil(job)
102
+ jobs << OpenStruct.new(job)
103
+ end
104
+ return jobs
105
+ end
106
+
107
+ # Set settings for XingApi client
108
+ #
109
+ # @param args [Hash]
110
+ def set_settings(args)
111
+ XingApi::Client.configure do |config|
112
+ config.consumer_key = args[:consumer_key]
113
+ config.consumer_secret = args[:consumer_secret]
114
+ config.oauth_token = args[:oauth_token]
115
+ config.oauth_token_secret = args[:oauth_token_secret]
116
+ end
117
+ end
118
+
119
+ end
120
+ end
121
+ end
@@ -1,39 +1,39 @@
1
- require 'net/http'
2
- require 'json'
3
- require 'date'
4
-
5
- module HawatelSearchJobs
6
- module Helpers
7
- module Base
8
-
9
- private
10
- def send_request(url, opt = {})
11
- uri = URI.parse(url)
12
- req = Net::HTTP::Get.new(uri)
13
- if opt[:basic_auth] && opt[:basic_auth][:username] && opt[:basic_auth][:password]
14
- req.basic_auth(opt[:basic_auth][:username], opt[:basic_auth][:password])
15
- end
16
- sock = Net::HTTP.new(uri.host, uri.port)
17
- sock.use_ssl = true if uri.scheme == 'https'
18
-
19
- sock.start { |http| http.request(req) }
20
- end
21
-
22
- def convert_empty_to_nil(hash)
23
- new = {}
24
- hash.each do |k,v|
25
- if v.to_s.empty?
26
- new[k] = nil
27
- else
28
- new[k] = v
29
- end
30
- end
31
- new
32
- end
33
-
34
- def convert_date_to_format(date, format)
35
- DateTime.parse(date).to_date.strftime(format) if !date.to_s.empty?
36
- end
37
- end
38
- end
1
+ require 'net/http'
2
+ require 'json'
3
+ require 'date'
4
+
5
+ module HawatelSearchJobs
6
+ module Helpers
7
+ module Base
8
+
9
+ private
10
+ def send_request(url, opt = {})
11
+ uri = URI.parse(url)
12
+ req = Net::HTTP::Get.new(uri)
13
+ if opt[:basic_auth] && opt[:basic_auth][:username] && opt[:basic_auth][:password]
14
+ req.basic_auth(opt[:basic_auth][:username], opt[:basic_auth][:password])
15
+ end
16
+ sock = Net::HTTP.new(uri.host, uri.port)
17
+ sock.use_ssl = true if uri.scheme == 'https'
18
+
19
+ sock.start { |http| http.request(req) }
20
+ end
21
+
22
+ def convert_empty_to_nil(hash)
23
+ new = {}
24
+ hash.each do |k,v|
25
+ if v.to_s.empty?
26
+ new[k] = nil
27
+ else
28
+ new[k] = v
29
+ end
30
+ end
31
+ new
32
+ end
33
+
34
+ def convert_date_to_format(date, format)
35
+ DateTime.parse(date).to_date.strftime(format) if !date.to_s.empty?
36
+ end
37
+ end
38
+ end
39
39
  end
@@ -1,3 +1,3 @@
1
- module HawatelSearchJobs
2
- VERSION = "0.1.1"
3
- end
1
+ module HawatelSearchJobs
2
+ VERSION = "0.1.2"
3
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hawatel_search_jobs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Przemyslaw Mantaj
@@ -9,76 +9,76 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-03-24 00:00:00.000000000 Z
12
+ date: 2016-06-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: xing_api
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '>='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - '>='
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: activesupport
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - '>='
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - '>='
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: bundler
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
48
  version: '1.10'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '1.10'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rake
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ~>
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
62
  version: '10.0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ~>
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
69
  version: '10.0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rspec
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - '>='
74
+ - - ">="
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - '>='
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  description: |-
@@ -92,11 +92,11 @@ executables: []
92
92
  extensions: []
93
93
  extra_rdoc_files: []
94
94
  files:
95
- - .codeclimate.yml
96
- - .gitignore
97
- - .rspec
98
- - .rubocop.yml
99
- - .travis.yml
95
+ - ".codeclimate.yml"
96
+ - ".gitignore"
97
+ - ".rspec"
98
+ - ".rubocop.yml"
99
+ - ".travis.yml"
100
100
  - CODE_OF_CONDUCT.md
101
101
  - CONTRIBUTING.md
102
102
  - Gemfile
@@ -132,12 +132,12 @@ require_paths:
132
132
  - lib
133
133
  required_ruby_version: !ruby/object:Gem::Requirement
134
134
  requirements:
135
- - - '>='
135
+ - - ">="
136
136
  - !ruby/object:Gem::Version
137
137
  version: 2.0.0
138
138
  required_rubygems_version: !ruby/object:Gem::Requirement
139
139
  requirements:
140
- - - '>='
140
+ - - ">="
141
141
  - !ruby/object:Gem::Version
142
142
  version: '0'
143
143
  requirements: []
@@ -155,3 +155,4 @@ test_files:
155
155
  - spec/reed_spec.rb
156
156
  - spec/spec_helper.rb
157
157
  - spec/xing_spec.rb
158
+ has_rdoc: