Commit Graph

60 Commits

Author SHA1 Message Date
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
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
cf258bf4e5 fix(build): fixes to help more projects to build
Involving
* complete list of reserved words (keywords in Rust)
* use namespace for otherwise clashing types in cmn::, io::
2015-03-11 08:16:10 +01:00
Sebastian Thiel
d99ba9c5b3 fix(mako): fix name clashes
Scopes could be invalid, previosly, and the hub type could clash
with other types provided as Schema.

Also, we used reserved identifiers
2015-03-10 18:03:35 +01:00
Sebastian Thiel
c7e169dff3 fix(util): resource-to-category map
It allows to obtain category, which we previously dropped
2015-03-10 16:23:22 +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
92d8fa76d0 fix(apis): intermediate improvements ...
... it shows that the override I used previously won't work for `admin`.
Therefore we have to keep the actual value, instead of degenrating it.

Makes sense ... it's interesting how much one tends to hard-code things
to work just for a few cases, unless you opt in to see the whole picture
2015-03-10 15:54:43 +01:00
Sebastian Thiel
2d036b6623 feat(all-apis): build all apis, were possible
Now there is a blacklist feature, allowing to list apis we can't yet
handle for whichever reason.
2015-03-10 14:34:26 +01:00
Sebastian Thiel
2531011fc5 fix(resource): now with flattened activities
That way, we don't have recursive method builders, but instead
flatten the hierarchy. In our case, this is easier and means
less to type. E.g.

`hub.user().message().import(...)` now is
`hub.user().message_import(...)`

In go it would look like this though
`hub.user.messages.import(...)
which is neater.

We will never have that though, as it will initialize a massive amount
of data right on the stack, even though only some of it is ever used
... .
2015-03-10 11:55:11 +01:00
Sebastian Thiel
35bd1c3e9c fix(resources): first recursive resource support
However, this also means we need recursive builders, which is tottally
unsupported for now ... .

This means we have to generalize rbuild generation ... could be easy.
Lets see
2015-03-10 11:04:25 +01:00
Sebastian Thiel
3b7e63f286 fix(scope): make scope gen work with gmail 2015-03-10 10:38:04 +01:00
Sebastian Thiel
7b81646f43 chore(make): update-json and all APIs
It's about time we finish up this part, to make it even easier to test
against more APIs, and keep them up-to-date
2015-03-10 10:34:19 +01:00
Sebastian Thiel
28878e0618 fix(Scope): Manual scope parameter ...
... however, it should better be a set, and there must be a way to
control certain global names using the configuration :)
2015-03-10 09:05:03 +01:00
Sebastian Thiel
bb76832b2f feat(lib): new Scope enum type
For use in all places where scopes are desired. It will also be made
available for adding scopes by the user.
2015-03-10 08:35:57 +01:00
Sebastian Thiel
e1b7a63f06 feat(mbuild): scope as property ...
... however, it will become an enumeration, as I don't like people
putting in strings all by themselves. This also means we have to
generate good enums ourselves.
2015-03-10 07:43:49 +01:00
Sebastian Thiel
da300e035e feat(result): generic result type
... and we actually add additional fields to our fields list.
2015-03-09 16:16:13 +01:00
Sebastian Thiel
6c41660943 feat(fields): put all fields onto a list
Also handle the case when the 'part' field is generated from the
request. Additional params still need work
2015-03-09 15:26:04 +01:00
Sebastian Thiel
1423e46210 fix(delegate): it now works in every which way
Custom property annotations have been very useful, to steer very special
cases.

It's also good that now there is enough infrastructure to deal with
any amount of additional type parameters.
2015-03-09 11:55:33 +01:00
Sebastian Thiel
678b6929ca feat(delegate): first attempt to get it to work
With a big but ! The most simple thing to do it was to just add
additional type parameters to the respective method.

Now the type cannot be inferred, which means type-hints must be added.
This should be easy enough, but ... has to be done somehow.
2015-03-09 10:44:13 +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
4b12da4a12 docs(mbuild): docs for terms.upload methods
Also fs::File is now used with prefix, to prevent clashes.
2015-03-08 18:10:35 +01:00
Sebastian Thiel
baea071a6f fix(mbuild): added size and mime type support
This information must be provided, I just forgot it
2015-03-08 17:42:41 +01:00
Sebastian Thiel
5b2d8a77a3 feat(mbuild): media-upload doit() methods
It's just a first step, and even though the generation works well,
I am still missing the right Rust code. Will have to simplify ...
2015-03-08 15:49:28 +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
66f3ae14e5 feat(drive): added gogole drive API
Just to have another, different set of api information to deal with,
and not accidentally hard-code things to work with youtube only.

Prepared dealing with media uploads, and it turns out to be best to
adjust the 'doit()' to take the respective type parameter.

We also have to think about downloads, like the ones for google drive,
which requires custom query parameters.
2015-03-08 11:38:06 +01:00
Sebastian Thiel
182d0c6fac docs(scopes): scope docs for method builders 2015-03-08 09:48:42 +01:00
Sebastian Thiel
020300af15 feat(type-params): ground work for upload media
This might mean we need additional type parameters, but I will see how
it's going to work out.

In theory, we could define a new trait for Seek+Read, but this would
mean that we couldn't contain owned streams.

For max flexibility, it's better to have additional type parameters
and use BorrowMut to allow ownership, and borrow.
2015-03-08 09:09:18 +01:00
Sebastian Thiel
a7f93a93b6 docs(visuals): fixed spacing
Also, the `do()` implementation was moved into it's own def, even
though it's still quite empty.
2015-03-06 17:15:25 +01:00
Sebastian Thiel
42ae75c1a1 docs(mbuild): added info about settable parts
It's not as good as the parts info on the website, but it's something !
At least people don't have to read the text, but find this information
in all the spots that are relevant to this.
2015-03-05 17:32:26 +01:00
Sebastian Thiel
a3206abc92 fix(test): method builder examples work now
It was easier than expected, but in the end needs quite some custom
code and handling. Good to have mako (and python !!!)
2015-03-05 16:10:59 +01:00
Sebastian Thiel
9cbb2adc5a fix(docs): have to handle required/optionals vals
Of course, it's ok to do that, but ... of course it doesn't make things
easier. However, I want these examples to be representing the real thing
2015-03-05 16:03:05 +01:00
Sebastian Thiel
bfa20a18c8 docs(mbuild): method builder call example
With nearly fully randomized examples to show how it can be done.
It's quite nice to see actual calls, using everything required to get
a call. The only thing the user has to manage is to fill in actual
values.

But, it also shows that our builder pattern doesn't work yet due to ...
you guessed it ... lifetime issues :D
2015-03-05 15:42:37 +01:00
Sebastian Thiel
f2dda421e6 fix(docs): remove empty '/// # ' lines
They seem to make cargo fail to build valid doctests. Might be worth
a ticket !
2015-03-05 12:05:02 +01:00
Sebastian Thiel
331ecf87a7 refactor(rbuild): methods useful for mbuild as too
It's vital to be able to traverse parameters easily and consistently :)
2015-03-05 11:27:12 +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
452b658c27 fix(mbuild): setters now copy copyables
Previously, they would take everything as reference and clone
everything unconditionally. Now we do it only as we need to do it,
no extra work incurred.
2015-03-04 21:13:04 +01:00
Sebastian Thiel
1dc168497e refactor(mbuild): new _setter method
Just to make things a little easier to read. Don't expect it to
grow much larger though.
2015-03-04 20:29:58 +01:00
Sebastian Thiel
582aca3249 feat(setters): properties and setters for mbuilder
This includes descriptions, of course, and generally seems to look
quite neat. For now, we brutally consume all input to own it,
but in future we might be able to put in Borrow to support them all.
2015-03-04 19:18:04 +01:00
Sebastian Thiel
942cbe18f1 feat(mbuild): infrastructure for method builders
Now comes the actual work of setting them up.
Additionally, the docs were decluttered to show comments only
were necessary. Now the code path to getting the hub is as concise as
possible.
2015-03-04 17:16:50 +01:00
Sebastian Thiel
f1b99af5dc refactor(lib): move resource builder into own lib
As the code is likely to grow far more complex, it's required to move
it as long as it is easy to do so.
2015-03-04 16:05:50 +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
8746f5e0e2 fix(visuals): using visual markers now
Makes everything evaluate faster, and is good enough as well.
Besides, you don't have to think about whitespace too much, keeping
things simpler is usually better
2015-03-04 12:24:55 +01:00
Sebastian Thiel
e96260bacc feat(visuals): defs are now more readable
This works with a new `indent` and `unindent` filters respectively.
There are a few things to consider, but I have understood how it works
and can handle it.
There is some overhead just to give me nicer visuals ... might choose
a different route, like annotations.
2015-03-04 12:03:31 +01:00
Sebastian Thiel
615a124654 feat(hub): generate hub implementation and docs
This includes docs for the library usage.
It's totally great to be able to paste example code right were it
belongs, and also put the same elsewhere to compose more complex docs.
2015-03-04 11:07:14 +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
f1d95822f7 feat(doc): def for DO NOT EDIT comments
A note like that is now added to all files we generated, commented out
depending on the file type.

Quite neat, except that for filtering, I always have to use blocks.
2015-03-03 11:16:16 +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
f4030f0284 fix(activities): now the map is complete
It's quite nice - next up is marker traits !
2015-03-03 08:26:29 +01:00