workinstartups-api 0.0.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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/api.rb +114 -0
  3. metadata +44 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e0e4947a5c211bdfa0c8a4992979d0320fa13995
4
+ data.tar.gz: 4a438920e80d1c2b6e45d30ee8b50fedec5ef337
5
+ SHA512:
6
+ metadata.gz: 15b9d8470775d0cb641ca8574f29a92e7cd84bddaaa8f2193483541ec6bd0591310fa898184d3f8f453f6412b87263da9d68f42373ee9c90ca70e69a756b117b
7
+ data.tar.gz: 41f2ead941cbe07d644a9ee95d3b8c72306041420361f4f32fb0989ea773ffee235bb606a40522c9b7d76b22a8f7b070f67c4a011c0cfeffdae54542f17322e0
data/api.rb ADDED
@@ -0,0 +1,114 @@
1
+ require 'open-uri'
2
+ require 'json'
3
+
4
+ class API
5
+ def initialize(category=0, count = 20, random = false, type = 0)
6
+ @category = category
7
+ @count = count
8
+ @random = (random ? 1 : 0)
9
+ @type = type
10
+ @from_date = 0
11
+ @format = 'id title'
12
+ end
13
+ def set_from date
14
+ @from_date = date
15
+ end
16
+ def set_format format
17
+ @format = format
18
+ end
19
+ # Categories:
20
+ # 1: Programmers
21
+ # 2: Designers
22
+ # 3: Interns
23
+ # 4: undefined
24
+ # 5: Testers
25
+ # 6: undefined
26
+ # 7: Marketers
27
+ # 8: Managers
28
+ # 9: Consultants
29
+ # 10: undefined
30
+ # 11: undefined
31
+ # 12: undefined
32
+ # 13: undefined
33
+ # 14: undefined
34
+ # 15: Sales
35
+ # 16: Co-Founders
36
+
37
+ # Type:
38
+ # 0: all
39
+ # fulltime
40
+ # parttime
41
+ # freelance
42
+
43
+ # Ordering:
44
+ # 0: by post date
45
+ # 1: randomly
46
+
47
+ def create_query
48
+ base_uri = URI.parse("http://workinstartups.com/job-board/api/api.php")
49
+ params = {
50
+ action: 'getJobs',
51
+ type: @type,
52
+ category: @category,
53
+ count: @count,
54
+ random: @random,
55
+ days_behind: 0,
56
+ response: 'json'
57
+ }
58
+ query_string = params.map{|k,v| "#{k}=#{v}"}.join('&')
59
+ @query = base_uri
60
+ @query.query = query_string
61
+ @query
62
+ end
63
+ def format string
64
+ formatted = ""
65
+ if @format.include?"id"
66
+ formatted += "id: " + string["id"]
67
+ end
68
+ if @format.include?"title"
69
+ formatted += "\nTitle: " + string["title"]
70
+ end
71
+ if @format.include?"category"
72
+ formatted += "\nCategory: " + string["category_name"]
73
+ end
74
+ if @format.include?"description"
75
+ formatted += "\nDescription: " + string["description"]
76
+ end
77
+ formatted
78
+ end
79
+ def get_latest formatted=true
80
+ query = create_query
81
+ open(query) do |f|
82
+ f.each_line do |line|
83
+ raw = line
84
+ unless raw.nil?
85
+ data = raw.gsub('var jobs = ','').gsub(';', '')
86
+ obj = JSON.parse(data)
87
+ @formatted = Array.new
88
+ @latest = Array.new
89
+ @from_date ||= Date.today
90
+ obj.each do |job|
91
+ if Date.parse(job["created_on"]) > @from_date
92
+ @formatted << (format job)
93
+ @latest << job
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
99
+ if formatted
100
+ @formatted
101
+ else
102
+ @latest
103
+ end
104
+ end
105
+ def get_job id=nil
106
+ if @latest.nil?
107
+ get_latest
108
+ end
109
+ if id.nil?
110
+ raise "No Id for job"
111
+ end
112
+ format @latest.select{|obj| obj["id"] == id}.first
113
+ end
114
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: workinstartups-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Hugo Di Francesco
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-02-08 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: API wrapper around a publicly exposed endpoint
14
+ email: hugo@awebots.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - api.rb
20
+ homepage: http://hugodf.github.io/workinstartups-api
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.4.8
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: Work In Startups UK API wrapper
44
+ test_files: []