• Stars
    star
    278
  • Rank 148,454 (Top 3 %)
  • Language
    Haskell
  • License
    Other
  • Created about 9 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A comprehensive Google Services SDK for Haskell.

Gogol

Hackage Version

Description

A comprehensive Google Services SDK for Haskell supporting all of the publicly available services.

Documentation

You can find the latest stable release documentation for each respective library on Hackage under the Google section.

Organisation

This repository is organised into the following directory structure:

  • lib/gogol: Actual operational logic, you'll need to import this to send requests etc.
  • lib/gogol-core: The gogol-core library upon which each of the services depends.
  • lib/services/gogol-*: Data types for each of the individual Google Compute Engine Service libraries.
  • examples: A currently sparse collection of examples for the various services.
  • configs, Configuration, templates, and assets for the code generator.
  • gen: The code generation binary.
  • scripts: Scripts to manage the release lifecycle of the service libraries.

Change Log

A change log for the entire project can be found under gogol/CHANGELOG.md.

Contribute

For any problems, comments, or feedback please create an issue here on GitHub.

Code Generation

For pull requests which affect generated output, please do not include the actual regenerated service code, only commit the updates to the generator and related configuration.

This ensures the Continuous Integration process is the single source of truth for generated code changes, and keeps pull requests readable and focused on actual generator code/logic changes.

Adding New Services

The configuration for the generation step of each individual service endpoint lives under ./configs/services. The naming matches the Google Discovery Service naming of endpoints, which are vendored under ./configs/models.

Rather than actually crawling the Discovery Service, the Google API Go Client is vendored under ./vendor, and the JSON service definitions are copied to ./configs/models to ensure reproducibility of the generation steps and the abilitry to diff across versions.

Example: Cloud Dataproc

To add a new endpoint, first create the related JSON configuration in the ./configs/services directory.

Since the Cloud Dataproc API is called dataproc-api.json in the Google Discovery API, you would create the configuration ./configs/services/dataproc.json with the following contents:

{
 "library": "dataproc",
 "canonicalName": "Dataproc"
}

Then, the Makefile is used:

make clean
make

This will build the ./bin/gogol-gen binary, and will generate a Haskell library for each API that has matching ./configs/services/*.json configuration.

For the above example, the result would be a ./lib/services/gogol-dataproc directory at the top-level of the project containing the generated API client.

make full-clean can be used to cause a complete re-download of all (including new) service models.

Individual clients/SDKs can be generated by passing a specific MODELS environment variable to the make command, for example: MODELS=configs/models/admin/directory/v1/admin-api.json make

Licence

Gogol is released under the Mozilla Public License Version 2.0.

Parts of the code are derived from Google Compute Engine service descriptions, licensed under Apache 2.0. Source files subject to this contain an additional licensing clause in their header.

More Repositories

1

amazonka

A comprehensive Amazon Web Services SDK for Haskell.
Haskell
599
star
2

terrafomo

Le Fromage de Terreur - Auto-generated Terraform DSL
Haskell
64
star
3

ede

Templating language with similar syntax and features to Liquid or Jinja2.
Haskell
47
star
4

gamekeeper

Nagios monitoring and Ganglia/Graphite HTTP statistics aggregation for RabbitMQ
Haskell
25
star
5

credentials

Management and Distribution of Secret Credentials
Haskell
23
star
6

numbersd

Concurrent and efficient implementation of statsd in Haskell
Haskell
19
star
7

network-metrics

Send metrics to Ganglia, Graphite, and statsd
Haskell
17
star
8

pagerduty

Haskell PagerDuty API Client
Haskell
13
star
9

semver

An implementation of the Semantic Versioning specification for Haskell
Haskell
13
star
10

statgrab

Haskell bindings to the portable system statistics libstatgrab library.
Haskell
9
star
11

myxi

AMQP Router and Load-Balancer designed to simplify RabbitMQ clustering and federation
Erlang
7
star
12

dotfiles

Arch Linux and MacOSX dotfiles
Nix
7
star
13

keiretsu

Multi-process orchestration for development and integration testing
Haskell
7
star
14

text-manipulate

Textual case conversion and word boundary manipulation
Haskell
6
star
15

amqp-subscribe-many

Reference implementation for handling a publish-one, subscribe-many pattern
Ruby
6
star
16

reloader

mochimedia's reloader made rebar compatible.
Erlang
5
star
17

stetson

Erlang client for Etsy's statsd statistics aggregator
Erlang
4
star
18

khan

Taming the Mongol Horde
Haskell
4
star
19

amazonka-iam-policy

IAM Policy Document DSL and Combinators
Haskell
3
star
20

xdr

GHC 7.4 compatible XDR encoder and decoder
Haskell
3
star
21

problem_sets

Random solutions to random problems found in random locations on the interweb
Erlang
3
star
22

harbinger

Dynamo queues
Erlang
3
star
23

erlexec

git clone of erlexec from http://code.google.com/p/erlexec/
Shell
3
star
24

amqp-conduit

Conduit interface for Network.AMQP
Haskell
3
star
25

hexpat-pickle-generic

Picklers for de/serialising Generic data types to and from XML using hexpat
Haskell
3
star
26

comlink

Ghetto IRC notifications via Curl
Haskell
2
star
27

Mechanic

Erlang websocket server with javascript interface
JavaScript
2
star
28

amqp-bark

AMQP logging system for infrastructure components
Haskell
2
star
29

querystring-pickle

Picklers for de/serialising Generic data types to and from query strings
Haskell
2
star
30

czar

Push based monitoring system for gathering metrics and alerts
Haskell
2
star
31

chrononaut

Pure SQL Migrations
Haskell
2
star
32

semaphore

Shared access to resources (such as AMQP/DB connections) with tracking and disposal via monitors
Erlang
2
star
33

apteryx

Apteryx is a S3 backed APT server and related upload/management tools for Debian packages stored in S3.
Haskell
2
star
34

vanguard

Management UI for disparate/unclustered RabbitMQ instances
JavaScript
2
star
35

monocypher

C
1
star
36

digger

CLI tool to generate publish-one, subscribe-many Shovel configurations for RabbitMQ
Erlang
1
star
37

restomp

Re-entrant STOMP parser
Erlang
1
star
38

seize

Simultaneously capture STDERR and STDOUT when running OS commands from Erlang
C
1
star
39

ligature

Graphite dashboards
Haskell
1
star
40

rebar-templates

Rebar Templates
Shell
1
star
41

grimoire

librarian-chef API endpoint which uses a specified GitHub organisation a replacement for cookbooks.opscode.com/api/v1
Haskell
1
star
42

Reticulator.js

Simple generator for random loading/success/response messages ala Maxis' games
JavaScript
1
star
43

up

Super Uploader
1
star
44

czar-language

Configuration language parser + compiler
Haskell
1
star
45

Monocle.js

A monocle to go with your mustache. Quick and dirty auto-generated form element templates for mustache.
JavaScript
1
star
46

DatabaseQueue

A simple (blocking/threadsafe/.net 3.5) C# queue using json/binary/xml serialization and an underlying database as the storage mechanism (berkeleydb/sqlite/sqlcompact implemented)
C#
1
star
47

outliner

Ruby implementation of the HTML5 outline algorithm
Ruby
1
star
48

gamekeeper-cookbook

Chef cookbook for installing gamekeeper
Ruby
1
star
49

Shared

Shared libs from the arse end of the DDD project tier I use to interchangeably access MongoDb or NHibernate. Also includes a lot of common MVC related infrastructure and extensions.
C#
1
star
50

pistachio

Exploratory work-in-progress for a faster + more ergonomic Rust mustache implementation
Rust
1
star
51

VisualStudioSettings

VS Settings, Zenburn Theme, 1TBS, DejaVu Sans Mono
1
star