Commit Graph

27 Commits

Author SHA1 Message Date
Sebastian Thiel
aadf37004e docs(methods):deal with 'virtual' methods resource
We assure to know about it, instead of writing nonsense about that
'methods' resources which does not actually exist.

I am relatively sure to have found all the spots.

Fixes #22
2015-03-19 11:56:18 +01:00
Sebastian Thiel
60d953a342 feat(methods): intermed. support for 'methods'
These 'methods' have no resources, and need slightly special handling.
This version at least makes the generator work, even though
it produces duplicates.

However, as it is so ugly, I'd rather consider to change it
substantially ... this feature should just come naturally.
2015-03-17 15:48:07 +01:00
Sebastian Thiel
8006bb8ca9 fix(activities): fully qualified activity names
Fixes #7
2015-03-14 11:23:01 +01:00
Sebastian Thiel
4cf365d026 docs(todos): result handling and remaining todos
Basically there is no todo left, which puts us in a good position for
implementing more features, and get some feedback in the meanwhile.
2015-03-13 15:01:32 +01:00
Sebastian Thiel
00de2b187d fix(traits): transitive, minimal traits for types
Previously, I would just assign all useful traits to all types, no
matter on how they were actually used.
Now it builds all dependnecies and considers them when assigning
traits, which is as precise as we need it.

This is important to us as the `Json` type is just encodable, but
not decodable. Fortunately, we just have to encode it, but in theory
this makes it hard to embed any json in a known structure.
2015-03-11 21:00:34 +01:00
Sebastian Thiel
ac8c41530d feat(schemas): now we pre-generate nested schemas
Into a complete, global list of schemas, with additional meta-data.

However, it's currently not complete, as $refs are missing.
There is some resemblance to to_rust_type(...), which worries me
slightly
2015-03-11 18:01:53 +01:00
Sebastian Thiel
712fed578a feat(json): part 1 to implement 'any' type
It is a Json object, with a schema as defined elsewhere. It's quite
cool to see this (nearly) working already. However, it will require
us to transitively assign the required markers which is based
on information we don't currently have.

Maybe implementing this could also help to simplify name-clash checks
or make them better at least ?
2015-03-11 17:07:07 +01:00
Sebastian Thiel
614539a925 fix(type-clashes): protect from nested-type-clash
It was possible for a nested type to be generated with a name that in
fact CLASHED with an existing schema type. What are the odds !

The clash-check added will just verify against clashes with schema
types, which seems to be doing it for now.
2015-03-11 15:30:11 +01:00
Sebastian Thiel
32145e645e fix(names): nested type names are consistent now
At least so it appears.
The implementation doesn't look totally clean to me, as it seems
similar concerns are in different portions of the code, which was
merely tuned to work together.

It could break appart if someone - me - wants to change it sometime
2015-03-11 14:58:02 +01:00
Sebastian Thiel
5b5ad43bfa refactor(schema): deduplicate object creation code
Everything is still working ... maybe it will all work now ?
2015-03-11 12:19:39 +01:00
Sebastian Thiel
dfcd554faa fix(schema): improved nested array type handling
It needs deduplication though, coming up next
2015-03-11 12:14:47 +01:00
Sebastian Thiel
50fa189a71 fix(schema): now deals with non-objects
These are arrays or HashMaps, which are nested types too. This is used
to have custom types of standard vectors or hashmaps, which resolve
to NewTypes in Rust.
2015-03-11 11:07:03 +01:00
Sebastian Thiel
5d563c88a8 fix(hash): nested type resolution and hashes
It seems we do it better than the actual Go implementation, which fails
to detect that scopes are actually having a string member.

However, there still is an issue, as it's as hashmap for us, but just
a member for go ... lets see ...
https://developers.google.com/discovery/v1/reference/apis#resource
shows that we implement it correctly :) !!
2015-03-11 10:19:51 +01:00
Sebastian Thiel
559cb8fe45 fix(build): remove compiler warnings.
Also, a build issue was fixed when schemas were no objects.
However, I think I will have to check this one anyway
2015-03-11 09:02:07 +01:00
Sebastian Thiel
efe56ad250 fix(util): deepcopy dicts instead
It was possible for writes to happen in nested dicts, causing global
data to change and confuse the system.
Not that I wouldn't be aware of that danger, but apparently I didn't
see the recursiveness of the call tree :).
2015-03-11 08:40:05 +01:00
Sebastian Thiel
7816cc8145 fix(util): do not degenerate during activity_split
First step, next one will actually be keeping that data ...
2015-03-10 16:10:19 +01:00
Sebastian Thiel
ac35432b3f docs(lib): cross linking of resources/activities
This makes it so much easier to get to the example call you are
interested in.
It's getting there, slowly ;)
2015-03-08 18:58:15 +01:00
Sebastian Thiel
0d9f6363eb fix(nestedtypes): recursion for nested types
Drive has recursive nested types, which were not handled preeviously.
2015-03-08 12:45:02 +01:00
Sebastian Thiel
70ea612f19 fix(builders): fixed part handling,it compiles now
What's missing is docs, which will see some work now.
I guess it will be best to hide all the prelude from the user, to allow
him to focus on what's important here.
2015-03-05 11:07:43 +01:00
Sebastian Thiel
48d40d45c5 feat(builders): request type handling part 1
Now we will generate proper resoure methods builder calls to instaniate
the more or less valid method builders.

However, it doesn't compile yet, and the 'to_parts()' method on
resources is still missing.
2015-03-05 08:27:07 +01:00
Sebastian Thiel
01db89057d feat(builder): Partial MethodBuilder impl
Including documentation at least on the method builder part. The
great thing is that fully working examples are now included on
every type !

Now more involved part starts ... namely setting up the individual call
method signatures.
2015-03-04 15:24:23 +01:00
Sebastian Thiel
74aa7bba2d docs(lib): library overview as far as possible
Everything we have, feature wise, is now documented in a first version
at least.

We shall keep this uptodate with what we are implementing, which also
helps figuring out a good api.
2015-03-03 12:53:38 +01:00
Sebastian Thiel
8dc5e2a53d fix(traits): perfected trait recognition.
However, they are not listed as traits of the youtube api. What we
really want is to list common implementation types as part of ourselves.

This doesn't work though as long as we don't have the common impl
as part of our sources.
2015-03-03 09:37:23 +01:00
Sebastian Thiel
c1eeee0591 feat(traits): add marker traits to schema types
Based on their involvement in activities.
It nearly works perfectly.
2015-03-03 09:25:42 +01:00
Sebastian Thiel
ba98bee62f feat(lookup): LUTs and context to make better docs
Now a context is passed to utility functions, which contains the state
these may be interested in. This keeps it clean from global state.

With the lookup tables, it is possible to figure out relations between
types and document them accordingly.
2015-03-03 08:06:37 +01:00
Sebastian Thiel
49c2ffb8e0 fix(schema): now docs look good too 2015-03-02 19:18:06 +01:00
Sebastian Thiel
a5e675e7a9 feat(schema): generating valid rust from schemas
It's very nice, even though there is some more work to be done here.
It's just the beginning ... .
2015-03-02 19:07:58 +01:00